黑马程序员技术交流社区

标题: public Random(long seed)给出指定的种子? [打印本页]

作者: lijiy09    时间: 2016-3-15 12:52
标题: public Random(long seed)给出指定的种子?
public Random(long seed);
产生随机数,这里的种子具体是什么意思,给出后每次产生的随机数为什么都一样?
作者: ameanboy    时间: 2016-3-15 22:49
这个问题很大了。。牵涉到随机数的产生原理,我简单说一下,如果想深究,楼主可以熊度一下
因为计算机的内存不是无限的,所以如果要产生真正的随机数(例如水面的波纹,自然的噪音等)是不具备这个条件的,早期的计算机学家设计了种子生成随机数这个算法,
例如,种子是11,那么后面进行一系列操作:将11平方,121平方,14641平方拼接,得到了1112114641214358881这样一串数字,那么计算机每次依次取一位,可以近似模拟出随机的效果
现代计算机性能越来越强大,随机数的算法已经不是像上面那么简单了,但是这个种子的思路依然在沿用
作者: 任楚贤    时间: 2016-3-15 23:30
给你举个例子:Random r=new Random(100);int a=r.nextInt();int b=r.nextInt();ab的值会不同,但是你运行两遍,ab的值不会发生改变,因为ab都是利用种子算出来的,每调用一次nextInt就算一次,重复调用值是一样的
作者: lijiy09    时间: 2016-3-16 00:57
谢谢大家,终于知道了~




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