1. java怎麼產生隨機數
一、利用random方法來生成隨機數。
在Java語言中生成隨機數相對來說比較簡單,因為有一個現成的方法可以使用。在Math類中,Java語言提供了一個叫做random的方法。通過這個方法可以讓系統產生隨機數。
二、通過Random類來生成隨機數。
在Java語言中,除了可以通過random 方法來產生隨機數之外,還可以通過一個random類來產生隨機數。程序開發人員可以通過實例化一個Random對象來創建一個隨機數的生成器。如 Random i=new Random()。通過這條語句就利用了Random類創建了一個隨機數的生成器。數
三、產生隨機的字元。
可以利用random方法來產生隨機字元。如可以利用代碼生成一個隨機的小寫字元:(char)(『a』+Math.random()*(『z』-『a』+1))。其實這跟生成任意兩個數之間的隨機數類似。通過以上的代碼就可以生成一個范圍之內的任意隨機字元。通過對這個代碼進行適當的修整,還可以生成任意兩個字元之間的隨機字元與任意大寫字元的隨機字元。其轉換的方式跟上面提到的任意范圍之內的隨機數類似。
2. Java編程生成100個1~6之間的隨機數,統計1~6每個數出現的概率;
首先:關於隨機數的生成方法
java里生成隨機數主要有2個方法比較常用.
1.Random類. 在java.util.包里, 有多種方法可以隨機產生int, long, double,boolean等類型
2.Math 類,在java.lang.包里, 可以生成一個[0~1)之間的隨機浮點數
*備注* :a. )使用Random需要導包,但是使用Math無需導包.
b. )Math底層還是調用了Random類的nextDouble()方法
其次:關於隨機數的代碼
例如生成[1,6]之間的隨機數
1 .Random的方法,生成的隨機數
Randomr=newRandom();
intnum1=r.nextInt(6)+1;//r.next(6)生成的是0~5之間的數字,需要+1,才是[1~6]之間的數字
2. Math的方法,進行隨機數的生成
intnum=(int)(Math.random()*6)+1;
//(int)(Math.random()*6)生成的是0~5之間的整數
//需要+1才是[1~6]的數字
關於次數統計的方案
1, 可以使用HashMap<K,V>的方法進行存儲統計. 因為key不重復,所以key可以來存數字1~6, 而對應的V就可以用來存儲出現的次數
2. 可以使用數組的方法來存出現的次數. 數字1~6 是連續的, 數組下標也是連續的.我們可以用下標[0~5] 來代表數字[1~6], 數組的每個格子用來存數字數字出現的次數
完整的代碼
//本題使用數組來寫代碼比較方便,簡潔.
importjava.util.Random;
publicclassRandomDemo{
publicstaticvoidmain(String[]args){
int[]times=newint[6];//6個格子的數組,存儲出現的次數
intn=100;//循環的次數
Randomr=newRandom();
for(inti=0;i<n;i++){
intnum=r.nextInt(6)+1;//方法1隨機產生1~6的數字
//intnum=(int)(Math.random()*6)+1;//方法2隨機產生1~6的數字
times[num-1]=times[num-1]+1;//次數增加1
}
for(inti=0;i<times.length;i++){
System.out.println((i+1)+"出現的次數"+times[i]);
}
}
}
輸出: 當n=100時
1出現的次數13
2出現的次數16
3出現的次數17
4出現的次數23
5出現的次數21
6出現的次數10
輸出: 當n=1000時
1出現的次數160
2出現的次數177
3出現的次數161
4出現的次數169
5出現的次數175
6出現的次數158
結論:
n=100時, 6是次數是10, 4次數是23, 兩者的次數相差2倍多
n=1000時, 6次數是158, 2次數是177, 兩者比較接近
說明: 當隨機的次數越多. 那麼隨機數的概率也越來越接近~
3. java獲取隨機數的幾種方法是什麼
方法1x0dx0a(數據類型)(最小值+Math.random()*(最大值-最小值+1))x0dx0a例:x0dx0a(int)(1+Math.random()*(10-1+1))x0dx0a從1到10的int型隨數x0dx0a方法2x0dx0a獲得隨機數x0dx0afor (int i=0;i<30;i++)x0dx0a{System.out.println((int)(1+Math.random()*10));}x0dx0a(int)(1+Math.random()*10)x0dx0a通過java.Math包的random方法得到1-10的int隨機數x0dx0a公式是:最小值---最大值(整數)的隨機數x0dx0a(類型)最小值+Math.random()*最大值x0dx0a方法3x0dx0aRandom ra =new Random();x0dx0afor (int i=0;i<30;i++)x0dx0a{System.out.println(ra.nextInt(10)+1);}x0dx0a通過java.util包中的Random類的nextInt方法來得到1-10的int隨機數 x0dx0a生成0到1之間的任意隨機小數:x0dx0a生成[0,d)區間的隨機小數,d為任意正的小數,則只需要將nextDouble方法的返回值乘以d即可。x0dx0a[n1,n2]x0dx0a也就是 ra.nextDouble() * (n2-n1)+n1
4. 如何在java中產生隨機數
在j2se里我們可以使用Math.random()方法來產生一個隨機數,這個產生的隨機數是0-1之間的一個double,我們可以把他乘以一定的數,比如說乘以100,他就是個100以內的隨機,這個在j2me中沒有。
在java.util這個包裡面提供了一個Random的類,我們可以新建一個Random的對象來產生隨機數,他可以產生隨機整數、隨機float、隨機double,隨機long,這個也是我們在j2me的程序里經常用的一個取隨機數的方法。
在我們的System類中有一個currentTimeMillis()方法,這個方法返回一個從1970年1月1號0點0分0秒到目前的一個毫秒數,返回類型是long,我們可以拿他作為一個隨機數,我們可以拿他對一些數取模,就可以把他限制在一個范圍之內。
5. java中如何以不同概率產生隨機數1-30
Random rm = new Random();
int i = rm.nextInt(18);
int n = 0;
if(i > 8){
n = rm.nextInt(10)+1;
}else if(i > 2&&i <= 8){
n = rm.nextInt(11) + 10;
}else if(i<=2){
n = rm.nextInt(11) + 20;
}
這樣生成的整數n是 3/6的概率在1-10之間,2/6的概率是在10-20之間,1/6的概率是在20-30之間(這種都是偽隨機,但盡量接近概率)
你看看這樣行不行
希望對你有幫助
6. 關於Java里產生1-6隨機數的方法
我認為2種方法產生的1~6的幾率是相等的,都為1/6.
第一種(int)(Math.random()*10)%6得到0~6的隨機數,每個數的產生的概率為1/7,再加上1,得到1~6的隨機數,0不再出現,每個數產生的幾率1/6.
另一種(int)(Math.random()*6)產生0~5,每個數產生的概率為1/6,再加上1,得到1~6的隨機數,每個數產生的幾率仍為1/6.
7. Java:怎樣產生1~6的隨機數,並使1~4產生的概率大一些呢
用概率模型,先隨機一次看取用哪個概率,隨後再隨機一次。代碼示例如下:
importjava.util.Random;
publicclassHelloWorld{
publicstaticvoidmain(String[]args)
{
Randomrandom=newRandom();
doublep1=0.7;//1~4的概率
doublep=(((int)random.nextInt(10)%(10)+1)*1.0/10<p1)?p1:(1-p1);//實際所取概率
intmax=(p==p1)?4:6;
intnum=(int)random.nextInt(max)%(max)+1;
System.out.print(num);
}
}
8. java如何獲取隨機數
隨機數控制在某個范圍內,使用模數運算符%x0dx0a import java.util.*;x0dx0a class TestRandom {x0dx0a public static void main(String[] args) {x0dx0a Random random = new Random();x0dx0a for(int i = 0; i < 10;i++) {x0dx0a System.out.println(Math.abs(random.nextInt())%10);x0dx0a }x0dx0a }x0dx0a }x0dx0a 獲得的隨機數有正有負的,用Math.abs使獲取數據范圍為非負數。
9. java程序:編寫生成100個1-6之間的隨機數,統計1—6每個出現的概率,菜鳥看不懂程序
1.用內置方法Math.random()產生一個隨機數介於0~1。
2.強制轉化為int類型,根據int類型的特點,這個數是0~5之間的整數。
3.得到的數加1,這樣這個數就是介於1~6的整數,並且是隨機的。
4.將介於1~6之間的這個整數賦值給randomNum
5.(重點)probability是個數組,這個程序的演算法就是:利用probability這個數組記錄隨機數出現的次數,probability[0]記錄隨機數1出現的次數,就是當出現的隨機數為1時,數組的probability[randomNum-1]項加1(randomNum-1是為了表現演算法,實際的程序中是不需要先加1再減1的)。同理:其它的隨意數也做這樣的處理。這樣,probability這個數組中[0]項保存的是1的出現次數,[1]項保存的是2出現的次數…………
6.輸出隨機數的值(後面加個空格「\t」)
7.循環到步驟第1.個步驟.
10. Java產生隨機數的幾種方式
方法1
(數據類型)(最小值+Math.random()*(最大值-最小值+1))
例:
(int)(1+Math.random()*(10-1+1))
從1到10的int型隨數
方法2
獲得隨機數
for (int i=0;i<30;i++)
{System.out.println((int)(1+Math.random()*10));}
(int)(1+Math.random()*10)
通過java.Math包的random方法得到1-10的int隨機數
公式是:最小值---最大值(整數)的隨機數
(類型)最小值+Math.random()*最大值
方法3
Random ra =new Random();
for (int i=0;i<30;i++)
{System.out.println(ra.nextInt(10)+1);}
通過java.util包中的Random類的nextInt方法來得到1-10的int隨機數
生成0到1之間的任意隨機小數:
生成[0,d)區間的隨機小數,d為任意正的小數,則只需要將nextDouble方法的返回值乘以d即可。
[n1,n2]
也就是 ra.nextDouble() * (n2-n1)+n1