黑马程序员技术交流社区

标题: Random r = new Random(47)中的47 是什么 为什么都是47 呢 [打印本页]

作者: 张亚超    时间: 2015-4-10 15:22
标题: Random r = new Random(47)中的47 是什么 为什么都是47 呢
在书中看到 Random r = new Random(47)
每次用到随机数的时候就有这个 后面的47为什么一直用这个数啊

作者: kitboxer    时间: 2015-4-10 15:29
跟HelloWorld差不多吧,习惯而已。47也是个质数
作者: 张亚超    时间: 2015-4-10 15:38
kitboxer 发表于 2015-4-10 15:29
跟HelloWorld差不多吧,习惯而已。47也是个质数

原来是这样。。纠结很久这个问题了
作者: xlunaer    时间: 2015-4-10 18:22
Random使用线性同余方法产生随机数,该公式如下:,其中A,B,M是产生器设定的常数。可以看出,下一个随机数是由上一个随机数决定的。47在这里充当种子作用,也就是该公式的第一个值,用于产生下一个值
作者: xlunaer    时间: 2015-4-10 18:32
xlunaer 发表于 2015-4-10 18:22
Random使用线性同余方法产生随机数,该公式如下:,其中A,B,M是产生器设定的常数。可以看出,下一个随机数 ...

图片挂了,你到这里来看http://zh.wikipedia.org/wiki/%E7%B7%9A%E6%80%A7%E5%90%8C%E9%A4%98%E6%96%B9%E6%B3%95
作者: 张亚超    时间: 2015-4-10 20:57
xlunaer 发表于 2015-4-10 18:22
Random使用线性同余方法产生随机数,该公式如下:,其中A,B,M是产生器设定的常数。可以看出,下一个随机数 ...

既然是随机数,为什么还要由上一个随机数决定呢。。大神这是什么里面的知识啊 想细学一下。。是算法里面的吗?
作者: xlunaer    时间: 2015-4-10 21:44
张亚超 发表于 2015-4-10 20:57
既然是随机数,为什么还要由上一个随机数决定呢。。大神这是什么里面的知识啊 想细学一下。。是算法里面 ...

不管那个语言生成的随机数都是伪随机数,真正的随机数都是不可以用公式描述的,而算法实现的随机数都是根据复杂公式生成的。这样生成的数规律就没有那么容易看出来了,看着就像随机生成的一样。java使用的线性同余方法就是这样一个公式。java的线性同余法就是这样一个公式,这个公式产生的值依赖于给定的初值,也叫做种子。很多随机数生成算法都有种子。
作者: AndroidM    时间: 2015-4-10 21:58
楼上大神啊
作者: showdy    时间: 2015-4-11 21:21
种子而已,random(long seed)构造方法,给定一样的种子,产生的随机数就会一样,不论你随机多少次。
作者: cc84    时间: 2015-4-11 21:35
加油!努力!
作者: 星之钥匙    时间: 2015-4-11 21:48
Random r = new Random(47)这样是种子的问题,应该这样写
  1. public class test4 {
  2.         public static void main(String[] args) {
  3.     Random  ran=new Random();
  4.     System.out.println(ran.nextInt(47));
  5.                
  6.         }

  7. }
复制代码

作者: 牵猪散步    时间: 2015-4-11 21:58
刚好也了解到这里了!学习学习!




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