java 中 (int)(Math.random()*3 ) 这个随机的 0 1 2 是等几率的么?

如题所述

几率差不多吧:以下有个程序,但是不能代表所有情况

package jspWeb;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

/**
 * 
 * @author itjob 远标培训
 *
 */
public class TestRead {

public static void main(String[] args) throws IOException {
int i = 0;
List<Integer> nums = new ArrayList<Integer>(); 
while(i < 10000){
i ++;
int num = (int)(Math.random()*3);
nums.add(num);
}
//统计
double size = nums.size();
int count0 = 0;
int count1 = 0;
int count2 = 0;
for(Integer n : nums){
switch (n) {
case 0:
count0 ++;
break;
case 1:
count1 ++;
break;
case 2:
count2 ++;
break;

default:
break;
}
}
System.out.println("0几率:" + count0/size);
System.out.println("1几率:" + count1/size);
System.out.println("2几率:" + count2/size);
/**
 * 结果:
 * 0几率:0.3299
1几率:0.3433
2几率:0.3268

 */
}

}

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-03-30
random()方法,是返回一个[0,1)的浮点数
一般我们是这样运用的,比如我要取一个1~9的随机数
int a=(int)(Math.random()*10)
注意是是乘上10再转。
但不是
int a=(int)(Math.random())*10

因为你的=(int)(Math.random())值永远为0,0乘上任何数都会是0本回答被网友采纳
相似回答