关于Java里产生1-6随机数的方法
[ 标签:java,爪哇 ]
一种是 (int)(Math.random()*10)%6+1
另一种 (int)(Math.random()*6)+1
这两种方法都可以产生1-6的随机数,但是问题在于产生1-6的几率是否相等。
第一种感觉是不相等的,第二种感觉是相等
高手来分析下
匿名 回答:5 人气:16 解决时间:2009-08-24 21:42
满意答案
好评率:0%
我认为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.
回答人的补充 2009-08-23 17:08
呃。。我又想了下,应该是这样的:
Math.random()随机产生0~0.9
第一种方法:(int)(Math.random()*10)随机产生0~9的数再%6,随机产生0~6的随机数,其中在0~9中:
0,6产生0
0,6产生0
回答人的补充 2009-08-23 17:22
郁闷,刚才不小心按提交了~
(int)(Math.random()*10)产生0~9的随机数,再%6,产生0~6的随机数。
最后加1,产生1~6的随机数。
在0~9的随机数中,要产生1~6的随机数,有:
0 产生 1
1 产生 2
2 产生 3
3 产生 4
4 产生 5
5 产生 6
6 产生 1
7 产生 2
8 产生 3
9 产生 4
这里产生1,2,3,4的概率都为2/10.
产生5,6的概率都为1/10
(int)(Math.random()*6)产生0~5随机数,再加1,得到1~6的随机数
在这里的0~5的随机数中,要产生1~6的随机数,有:
0 产生 1
1 产生 2
3 产生 4
4 产生 5
5 产生 6
这里1~6产生的概率均为1/6
综上,正如楼主所感觉,第1种方法产生1~6的几率是不相等的,第2种方法产生1-6的几率是相等的
评价答案
*
您已经评价过!
好:0
*
您已经评价过!
不好:0
*
您已经评价过!
原创:0
*
您已经评价过!
非原创:0
^_^Cyndi`▓
回答采纳率:31.4% 2009-08-23 12:40
满意答案
好评率:100%
用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,
+
回答人的补充 2009-08-23 12:52
+后,为1,2,2,3,4,4,5,5,6
仍不相等。
2,4,5的机率比较大。
评价答案
*
您已经评价过!
好:1
*
您已经评价过!
不好:0
*
您已经评价过!
原创:0
*
您已经评价过!
非原创:0
拨云子
回答采纳率:22.9% 2009-08-23 12:48
我有更好的回答
收藏
转载到QQ空间
转播到腾讯微博
相关知识
* •在 Java 中怎样产生1~10的随机数4回答2010-05-19
* •Java中怎样产生随机数和随机字母啊1回答2010-07-07
* •Java如何实现随机数?5回答2010-01-22
更多java产生随机数1-5相关知识>>
其他答案
math.random 产生的是什么
well
回答采纳率:28.9% 2009-08-23 12:02
*
您已经评价过!
好:5
*
您已经评价过!
不好:0
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内的整数,。。。你可以设计一个小程序来试验,发现它的六个数出现的几率是差不多的。
回答人的补充 2009-08-23 12:28
是random.打错字,嘿嘿
侊景國際
回答采纳率:23.9% 2009-08-23 12:27
*
您已经评价过!
好:5
*
您已经评价过!
不好:0
这是概率学的问题 概率肯定是一致的
当然如果想要想出彩票那样控制 就另说了
[ 标签:java,爪哇 ]
一种是 (int)(Math.random()*10)%6+1
另一种 (int)(Math.random()*6)+1
这两种方法都可以产生1-6的随机数,但是问题在于产生1-6的几率是否相等。
第一种感觉是不相等的,第二种感觉是相等
高手来分析下
匿名 回答:5 人气:16 解决时间:2009-08-24 21:42
满意答案
好评率:0%
我认为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.
回答人的补充 2009-08-23 17:08
呃。。我又想了下,应该是这样的:
Math.random()随机产生0~0.9
第一种方法:(int)(Math.random()*10)随机产生0~9的数再%6,随机产生0~6的随机数,其中在0~9中:
0,6产生0
0,6产生0
回答人的补充 2009-08-23 17:22
郁闷,刚才不小心按提交了~
(int)(Math.random()*10)产生0~9的随机数,再%6,产生0~6的随机数。
最后加1,产生1~6的随机数。
在0~9的随机数中,要产生1~6的随机数,有:
0 产生 1
1 产生 2
2 产生 3
3 产生 4
4 产生 5
5 产生 6
6 产生 1
7 产生 2
8 产生 3
9 产生 4
这里产生1,2,3,4的概率都为2/10.
产生5,6的概率都为1/10
(int)(Math.random()*6)产生0~5随机数,再加1,得到1~6的随机数
在这里的0~5的随机数中,要产生1~6的随机数,有:
0 产生 1
1 产生 2
3 产生 4
4 产生 5
5 产生 6
这里1~6产生的概率均为1/6
综上,正如楼主所感觉,第1种方法产生1~6的几率是不相等的,第2种方法产生1-6的几率是相等的
评价答案
*
您已经评价过!
好:0
*
您已经评价过!
不好:0
*
您已经评价过!
原创:0
*
您已经评价过!
非原创:0
^_^Cyndi`▓
回答采纳率:31.4% 2009-08-23 12:40
满意答案
好评率:100%
用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,
+
回答人的补充 2009-08-23 12:52
+后,为1,2,2,3,4,4,5,5,6
仍不相等。
2,4,5的机率比较大。
评价答案
*
您已经评价过!
好:1
*
您已经评价过!
不好:0
*
您已经评价过!
原创:0
*
您已经评价过!
非原创:0
拨云子
回答采纳率:22.9% 2009-08-23 12:48
我有更好的回答
收藏
转载到QQ空间
转播到腾讯微博
相关知识
* •在 Java 中怎样产生1~10的随机数4回答2010-05-19
* •Java中怎样产生随机数和随机字母啊1回答2010-07-07
* •Java如何实现随机数?5回答2010-01-22
更多java产生随机数1-5相关知识>>
其他答案
math.random 产生的是什么
well
回答采纳率:28.9% 2009-08-23 12:02
*
您已经评价过!
好:5
*
您已经评价过!
不好:0
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内的整数,。。。你可以设计一个小程序来试验,发现它的六个数出现的几率是差不多的。
回答人的补充 2009-08-23 12:28
是random.打错字,嘿嘿
侊景國際
回答采纳率:23.9% 2009-08-23 12:27
*
您已经评价过!
好:5
*
您已经评价过!
不好:0
这是概率学的问题 概率肯定是一致的
当然如果想要想出彩票那样控制 就另说了