关于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.
温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-04-04
用java.util.Random
类比较好用

Random
r=new
Random();

int
i=r.nextInt(6)+1;

生成1到6的数字应该机率比较相等;

(int)(Math.random()*10)%6+1产生0到9内的整数再
得到1,2,3,4的概率大些

因为(int)(Math.random()*10)%得到的数是从0到9;0%6+1=1.。。。。。。5%6+1=6

……6%6+1=1.。。。。9%6+1=4;

所以不相等

另一种
(int)(Math.random()*6)+1

从0.1到0.9
*6得到数是int型是0,1,1,2,3,3,4,4,5,

+本回答被提问者采纳
第2个回答  2020-04-06
Math类的方法fandom随机生成一个0.0到1.0(不含1.0)之间的double值

(int)(Math.random()*10)产生0到9内的整数再
%6
确实可以得到
1~6的随机数,但是
7
8
9
%6
一样得到
1
2
3
,是不是1
2
3
得到的几率会大一些些呢?呵呵

(int)(Math.random()*6)产生0到5内的整数,。。。你可以设计一个小程序来试验,发现它的六个数出现的几率是差不多的。
相似回答