導航:首頁 > 源碼編譯 > 數值自動生成區間java演算法

數值自動生成區間java演算法

發布時間:2022-05-24 05:31:30

java中 如何產生一個特定范圍的隨機數

java.util
類 Random
java.lang.Object
java.util.Random
所有已實現的介面:
Serializable
直接已知子類:
SecureRandom

--------------------------------------------------------------------------------

public class Randomextends Objectimplements Serializable此類的實例用於生成偽隨機數流。此類使用 48 位的種子,使用線性同餘公式對其進行修改(請參閱 Donald Knuth 的《The Art of Computer Programming, Volume 2》,第 3.2.1 節)。

如果用相同的種子創建兩個 Random 實例,則對每個實例進行相同的方法調用序列,它們將生成並返回相同的數字序列。為了保證屬性的實現,為類 Random 指定了特定的演算法。為了 Java 代碼的完全可移植性,Java 實現必須讓類 Random 使用此處所示的所有演算法。但是允許 Random 類的子類使用其他演算法,只要其符合所有方法的常規協定即可。

Random 類所實現的演算法使用一個 protected 實用工具方法,每次調用它都可提供最多 32 個偽隨機生成的位。

很多應用程序會發現 Math 類中的 random 方法更易於使用。

從以下版本開始:
JDK1.0
另請參見:
Math.random(), 序列化表格

--------------------------------------------------------------------------------

構造方法摘要
Random()
創建一個新的隨機數生成器。
Random(long seed)
使用單個 long 種子創建一個新隨機數生成器: public Random(long seed) { setSeed(seed); } next 方法使用它來保存隨機數生成器的狀態。
方法摘要
protected int next(int bits)
生成下一個偽隨機數。
boolean nextBoolean()
返回下一個偽隨機數,它是從此隨機數生成器的序列中取出的、均勻分布的 boolean 值。
void nextBytes(byte[] bytes)
生成隨機位元組並將其置於用戶提供的位元組數組中。
double nextDouble()
返回下一個偽隨機數,它是從此隨機數生成器的序列中取出的、在 0.0 和 1.0之間均勻分布的 double 值。
float nextFloat()
返回下一個偽隨機數,它是從此隨機數生成器的序列中取出的、在 0.0 和 1.0 之間均勻分布的 float 值。
double nextGaussian()
返回下一個偽隨機數,它是從此隨機數生成器的序列中取出的、呈高斯(「正常地」)分布的 double 值,其平均值是 0.0,標准偏差是 1.0。
int nextInt()
返回下一個偽隨機數,它是此隨機數生成器的序列中均勻分布的 int 值。
int nextInt(int n)
返回一個偽隨機數,它是從此隨機數生成器的序列中取出的、在 0(包括)和指定值(不包括)之間均勻分布的 int值。
long nextLong()
返回下一個偽隨機數,它是從此隨機數生成器的序列中取出的、均勻分布的 long 值。
void setSeed(long seed)
使用單個 long 種子設置此隨機數生成器的種子。
樓下的,直接說不理解有什麼用

⑵ java 統計數字所屬區間

intarray[]={1,2,101,220,1100,2300,1,10,230,220,2,1100};
intarr2[]=null;//用數組存儲array數組元素在各個區間個數
intmax=0;//初始化最大值;

//循環把數組最大值找出來
for(inti=0;i<array.length;i++){
if(array[i]>max){
max=array[i];
}
}
System.out.println("max:"+max);
//計算區間個數,如何最大值不能整除100要增加一個區間
if(max%100!=0){
arr2=newint[(max/100+1)];
}else{
arr2=newint[(max/100)];
}

//循環array數組元素
for(inti=0;i<array.length;i++){
//循環arr2數組
for(intj=0;j<arr2.length;j++){
//判斷array數組元素在那個區間段
if(array[i]>=j*100+1&&array[i]<=(j+1)*100){
arr2[j]++;
}
}
}

for(inti=0;i<arr2.length;i++){
if(i==max/100){
System.out.println("["+((i*100)+1)+"-"+(max)+"]:"+arr2[i]);
}else{
System.out.println("["+((i*100)+1)+"-"+((i+1)*100)+"]:"+arr2[i]);
}
}

隨便寫的,你嘗試下吧

⑶ java 取范圍內的隨機數,比如取10000至99999

公式:Math.random()*(n-m)+m,生成大於等於m小於n的隨機數
按公示取隨機數10000至99999[10000,99999):
故:Math.random()*(99999-10000)+10000;

⑷ 如何用java生成指定范圍的隨機數

要生成在[min,max]之間的隨機整數,
復制代碼 代碼如下:
package e.sjtu.erplab.io;
import java.util.Random;
public class RandomTest {
public static void main(String[] args) {
int max=20;
int min=10;
Random random = new Random();
int s = random.nextInt(max)%(max-min+1) + min;
System.out.println(s);
}
}
random.nextInt(max)表示生成[0,max]之間的隨機數,然後對(max-min+1)取模。
以生成[10,20]隨機數為例,首先生成0-20的隨機數,然後對(20-10+1)取模得到[0-10]之間的隨機數,然後加上min=10,最後生成的是10-20的隨機數

⑸ java怎樣將集合中的數值數據分區間統計個數:例如(0-1000)有幾個人數據,1000-2000有幾個數據

集合分組統計處理, 實現的方法很多,簡單的寫幾種方法供參考;(理解後,自行擴展完善)

方法一:(Java8流處理粗略版) 該版本存在的問題:有些區間沒有數據,就不列印顯示該區間

importjava.util.*;
importjava.util.stream.*;

publicclassNumberDemo{
publicstaticvoidmain(String[]args){

ArrayList<Integer>list=newArrayList<Integer>();
intnumbers=10;//集合里數字的個數
intspace=1000;//區間的間隔

//給集合里添加數字
Randomrd=newRandom();
for(inti=0;i<numbers;i++){
list.add(rd.nextInt(5000));//集合里每個數字的范圍是0~4999
}

funStream(list,space);
}

privatestaticvoidfunStream(ArrayList<Integer>list,intspace){
//使用流處理把數字分組
Map<String,List<Integer>>map=list.stream().collect(Collectors.groupingBy((num)->{
return"區間:["+num/space*space+","+(num/space+1)*space+")";//分組規則
}));
map.forEach((k,v)->{
System.out.println(k);
System.out.println(" "+v.size()+"個數據");
});
}
}

方法二:(Java8流處理詳細版) 就算有的區間是0個數據,照樣列印出來

importjava.util.*;
importjava.util.stream.*;

publicclassNumberDemo2{
publicstaticvoidmain(String[]args){
ArrayList<Integer>list=newArrayList<Integer>();
intnumbers=10;//集合里數字的個數
intspace=1000;//區間的間隔

//給集合里添加數字
Randomrd=newRandom();
for(inti=0;i<numbers;i++){
list.add(rd.nextInt(5000));//集合里每個數字的范圍是0~4999
}

funStream(list,space);
}

privatestaticvoidfunStream(ArrayList<Integer>list,intspace){
//使用流處理把數字分組
Map<Integer,List<Integer>>map=list.stream().collect(Collectors.groupingBy((num)->{
returnnum/space;//分組規則
}));

//獲取集合里的最大值
Optional<Integer>maxop=list.stream().collect(Collectors.maxBy(Integer::compareTo));
intmax=maxop.orElse(0);
//計算出區間的數量
intgroups=max%space==0?max/space:max/space+1;
//列印結果
for(inti=0;i<groups;i++){
System.out.println("區間:["+i*space+","+(i+1)*space+")");
System.out.println(" 有"+(map.get(i)==null?0:map.get(i).size())+"個數據");
//System.out.println(" "+map.get(i));//把數據列印出來
}
}
}

方法三:(比較傳統的方法)

importjava.util.*;

publicclassNumberDemo3{
publicstaticvoidmain(String[]args){
ArrayList<Integer>list=newArrayList<Integer>();
intnumbers=10;//集合里數字的個數
intspace=1000;//區間的間隔

//給集合里添加數字
Randomrd=newRandom();
for(inti=0;i<numbers;i++){
list.add(rd.nextInt(5000));//集合里每個數字的范圍是0~4999
}

fun(list,space);
}
privatestaticvoidfun(ArrayList<Integer>list,intspace){
Collections.sort(list);//排序
intmax=list.get(list.size()-1);//取得最大值
intgroups=max%space==0?max/space:max/space+1;//取得區間的數量
HashMap<Integer,ArrayList<Integer>>map=newHashMap<Integer,ArrayList<Integer>>();//存區間和該區間的數字
for(inti=0;i<groups;i++){
map.put(i,newArrayList<>());
}
//把元素添加到指定的區間
for(inti=0;i<list.size();i++){
map.get(list.get(i)/space).add(list.get(i));
}
//列印結果
for(inti=0;i<groups;i++){
System.out.println("區間:["+i*space+","+(i+1)*space+")");
System.out.println(" 有"+map.get(i).size()+"個數據");
//System.out.println(" "+map.get(i));//把數據列印出來
}
}
}

測試效果如下

區間:[0,1000)
有5個數據
區間:[1000,2000)
有0個數據
區間:[2000,3000)
有1個數據
區間:[3000,4000)
有2個數據
區間:[4000,5000)
有2個數據

⑹ JAVA中如何產生一個特定范圍的隨機數

生成0-2之間的隨機數,包括2

Random rand = new Random();

int randNum = rand.nextInt(3);

生成5-26之間的隨機數,包括26

int randNum = rand.nextInt(22)+5;

⑺ 在JAVA中 產生一個隨機數時,如何讓產生的數值在某一個范圍內,並舉例說明。

比如產生 5~15的隨機數
int num=(Math.abs(new Random().nextInt()))%11+5;

這種方法就可以。

⑻ Java編程中如何在一個數值范圍內生成一個偽

intstart=5,end=15;
//比如5~15,隨機范圍數的長度是10(15減5)生成的0到10之間得數加上5就是5到15之間
Randomr=newRandom();
r.nextInt(end-start)+start;
//同理Math.ramdom()得到的是0到1之間的小數
//乘上整數就得到0到該數值之間的數,再加上整數就得到該區間的數
//5~1515-5之間有10個數,就從0到10之間隨機生成,再加上5;
Math.ramdom()*(end-start)+start;

⑼ java怎麼進行隨機數生成演算法

要產生隨機數,可以使用Java api中java.lang包中的Math類.Math類以靜態方法的方式提供常用的數學方法,
其中Math.random()方法是一個可以產生[0.0,1.0]區間內的一個雙精度浮點數的方法
如:
產生一個100以內的整數:int x=(int)(Math.random()*100);
又如:
產生一個1-50之間的隨機數:int x=1+(int)(Math.random()*50)
也可以使用通用創建對象來獲取:
Random random = new Random();
random.nextInt(x);
產生一個0到x-1的正數,如果想產生浮點數有Random類的nextFloat方法,總之nextXXX方法是用來產生隨機數的。

⑽ 怎樣用java產生一個指定范圍的隨機數

java.util
類 Random
java.lang.Object
java.util.Random
所有已實現的介面:
Serializable
直接已知子類:
SecureRandom

--------------------------------------------------------------------------------

public class Randomextends Objectimplements Serializable此類的實例用於生成偽隨機數流。此類使用 48 位的種子,使用線性同餘公式對其進行修改(請參閱 Donald Knuth 的《The Art of Computer Programming, Volume 2》,第 3.2.1 節)。

如果用相同的種子創建兩個 Random 實例,則對每個實例進行相同的方法調用序列,它們將生成並返回相同的數字序列。為了保證屬性的實現,為類 Random 指定了特定的演算法。為了 Java 代碼的完全可移植性,Java 實現必須讓類 Random 使用此處所示的所有演算法。但是允許 Random 類的子類使用其他演算法,只要其符合所有方法的常規協定即可。

Random 類所實現的演算法使用一個 protected 實用工具方法,每次調用它都可提供最多 32 個偽隨機生成的位。

很多應用程序會發現 Math 類中的 random 方法更易於使用。

從以下版本開始:
JDK1.0
另請參見:
Math.random(), 序列化表格

--------------------------------------------------------------------------------

構造方法摘要
Random()
創建一個新的隨機數生成器。
Random(long seed)
使用單個 long 種子創建一個新隨機數生成器: public Random(long seed) { setSeed(seed); } next 方法使用它來保存隨機數生成器的狀態。
方法摘要
protected int next(int bits)
生成下一個偽隨機數。
boolean nextBoolean()
返回下一個偽隨機數,它是從此隨機數生成器的序列中取出的、均勻分布的 boolean 值。
void nextBytes(byte[] bytes)
生成隨機位元組並將其置於用戶提供的位元組數組中。
double nextDouble()
返回下一個偽隨機數,它是從此隨機數生成器的序列中取出的、在 0.0 和 1.0之間均勻分布的 double 值。
float nextFloat()
返回下一個偽隨機數,它是從此隨機數生成器的序列中取出的、在 0.0 和 1.0 之間均勻分布的 float 值。
double nextGaussian()
返回下一個偽隨機數,它是從此隨機數生成器的序列中取出的、呈高斯(「正常地」)分布的 double 值,其平均值是 0.0,標准偏差是 1.0。
int nextInt()
返回下一個偽隨機數,它是此隨機數生成器的序列中均勻分布的 int 值。
int nextInt(int n)
返回一個偽隨機數,它是從此隨機數生成器的序列中取出的、在 0(包括)和指定值(不包括)之間均勻分布的 int值。
long nextLong()
返回下一個偽隨機數,它是從此隨機數生成器的序列中取出的、均勻分布的 long 值。
void setSeed(long seed)
使用單個 long 種子設置此隨機數生成器的種子。
樓下的,直接說不理解有什麼用

閱讀全文

與數值自動生成區間java演算法相關的資料

熱點內容
jtbcphp 瀏覽:337
編程時遇到源代碼未編譯如何處理 瀏覽:431
綠源app怎麼查看綁定系統 瀏覽:357
qq里的壓縮文件怎麼保存 瀏覽:349
傷寒論桂林pdf 瀏覽:684
樹洞app怎麼搜索好友 瀏覽:217
冷庫壓縮機如何注油 瀏覽:641
無線wifi怎麼加密呢 瀏覽:432
linuxjava配置環境變數 瀏覽:702
rust伺服器怎麼下載地圖 瀏覽:831
程序員那麼可愛被誤會的片段 瀏覽:39
好玩免費的伺服器地址 瀏覽:344
vb腳本編譯 瀏覽:18
單片機led顯示數字 瀏覽:379
vim編譯器是什麼 瀏覽:385
ava程序員面試標准 瀏覽:791
安卓原生系統狀態欄編譯美化 瀏覽:64
java線程是什麼意思 瀏覽:710
如何查看伺服器的外網ip地址 瀏覽:721
命令方塊放置方塊 瀏覽:367