如何產生隨機整數
今天看到一個關於隨機數的小練習,題目是:編程生產 n個 1到 6 之間的隨機整數, 統計 1到 6 每 個數出現的概率。 我個人比較喜歡有隨機性的東西,所以就做了一下。
首先必須需要產生隨機數,而據我現在了解的產生隨機數的方法有兩種:
一是使用隨機數Random類:Random rand = new Random(); int a = rand.nextInt(6)+1;
該方法表示的是從0到6之間隨機產生整數,我們只需要加1即可。
二是調用Math類中的rand()方法:int a = (int)(Math.random()*6+1);
需要註意的是,Math.random()方法產生的隨機數是0到1之間的小數,如果轉為整型的話就全部變為0了,所以需要對其產生的數進行運算再賦值。
其實Math.random()方法的底層就是運用了Random類來進行計算產生隨機數的,但Math.random()方法使用較為簡單,所以在實際運用中,我們更傾向於使用Math.random()方法來產生隨機數。
完整程序如下:
package randomNum;
import java.util.Scanner;
public class RandomNumTset {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int count1 = 0;
int count2 = 0;
int count3 = 0;
int count4 = 0;
int count5 = 0;
int count6 = 0;
for (int i = 0; i < n; i++) {
int a = (int)(Math.random()*6+1);
//Random rand = new Random();
//int a = rand.nextInt(6)+1;
switch (a) {
case 1:
count1++;
break;
case 2:
count2++;
break;
case 3:
count3++;
break;
case 4:
count4++;
break;
case 5:
count5++;
break;
case 6:
count6++;
break;
default:
break;
}
System.out.println(a+" ");
}
System.out.println();
System.out.println("“1”出現的概率為"+count1/(double)n);
System.out.println("“2”出現的概率為"+count2/(double)n);
System.out.println("“3”出現的概率為"+count3/(double)n);
System.out.println("“4”出現的概率為"+count4/(double)n);
System.out.println("“5”出現的概率為"+count5/(double)n);
System.out.println("“6”出現的概率為"+count6/(double)n);
in.close();
}
}
輸入:100
輸出結果為:
“1”出現的概率為0.18
“2”出現的概率為0.17
“3”出現的概率為0.26
“4”出現的概率為0.18
“5”出現的概率為0.1
“6”出現的概率為0.11
ps:其中尤其註意各個數據的類型,以免出現錯誤。
如何產生隨機整數