黑马程序员技术交流社区

标题: 怎么随机出现(0,-1,1)中的一个数,概率相同 [打印本页]

作者: hanxing    时间: 2014-11-7 18:03
标题: 怎么随机出现(0,-1,1)中的一个数,概率相同
本帖最后由 hanxing 于 2014-11-9 12:01 编辑

刚刚又碰到一个问题,怎么随机出现0或者1或者-1这三个数字中的一个呢,且概率相等
作者: 姜浩    时间: 2014-11-7 18:13
我想到了一个方法,可以将0,1,-1,三个数,存入一个数组中。
然后通过Random,获取随机数(0,1,2)这三个数,作为索引来查找数组中的数。

作者: hanxing    时间: 2014-11-7 18:35
姜浩 发表于 2014-11-7 18:13
我想到了一个方法,可以将0,1,-1,三个数,存入一个数组中。
然后通过Random,获取随机数(0,1,2)这三 ...

真是妙哉!!!
作者: 冥夜    时间: 2014-11-7 18:41
这样?
  1. import java.util.Random;
  2. public class Test {
  3.         public static void main(String[] args)
  4.         {
  5.                 Random r=new Random();
  6.                 System.out.print(r.nextInt(3)-1);
  7.         }
  8. }
复制代码

作者: 姜浩    时间: 2014-11-7 18:50
板凳的方法很直接啊,很不错,数组都不用了。
作者: hanxing    时间: 2014-11-7 18:50
冥夜 发表于 2014-11-7 18:41
这样?

也对,我想歪了,老是想用Math.random()和Mth.round()解决,结果连续打印50个有30来个是0的
作者: zxbzxb333    时间: 2014-11-8 07:12
楼上的都不全对吧,random()方法产生的是伪随机数啊
作者: 桃华月禅    时间: 2014-11-8 09:54
我过去也是用集合索引的方法把一个集合中有序排列的数全部打乱,乱排序的,和二楼差不多
作者: qq8921310    时间: 2014-11-8 10:33
多线程啊.只要优先级相同,概率应该都是相等的.
作者: hanxing    时间: 2014-11-8 10:53
zxbzxb333 发表于 2014-11-8 07:12
楼上的都不全对吧,random()方法产生的是伪随机数啊

但是概率几乎相等,我还特意计算了100000次,0和-1和1的次数都是33300多点
目前咱们不是只学过伪随机数吗,只能那么用了.
作者: hanxing    时间: 2014-11-8 10:56
qq8921310 发表于 2014-11-8 10:33
多线程啊.只要优先级相同,概率应该都是相等的.

有点走弯路的感觉,还的特意去继承Thread类或者实现runnable接口,我的目的就是简单,高效
作者: hanxing    时间: 2014-11-8 11:00
姜浩 发表于 2014-11-7 18:50
板凳的方法很直接啊,很不错,数组都不用了。

对的,能少定义一个就少定义一个,能少导一个包就少导一个包.




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2