随机种子 Random seed

http://blog.sina.com.cn/s/blog_4b3120470100k96z.html
Random类的基值seed是什么意思?
比如:
Random ran1=new Random();
Random ran2=new Random(12345);
这两个有什么区别啊?运行结果没区别啊!
生成随机数 Random random = new Random(); Random random = new Random(100);//指定种子数100 random调用不同的方法,获得随机数。 如果2个Random对象使用相同的种子(比如都是100),并且以相同的顺序调用相同的函数,那它们返回值完全相同。如下面代码中两个Random对象的输出完全相同 import java.util.*; class TestRandom { public static void main(String[] args) { Random random1 = new Random(100); System.out.println(random1.nextInt()); System.out.println(random1.nextFloat()); System.out.println(random1.nextBoolean()); Random random2 = new Random(100); System.out.println(random2.nextInt()); System.out.println(random2.nextFloat()); System.out.println(random2.nextBoolean()); } }
====================================================================
一般计算机的随机数都是伪随机数,以一个真随机数(种子)作为初始条件,然后用一定的算法不停迭代产生随机数,下面介绍两种方法: 
  一般种子可以以当前的系统时间,这是完全随机的 
  。 
  算法1:平方取中法。 
  1)将种子设为X0,并mod 10000得到4位数 
  2)将它平方得到一个8位数(不足8位时前面补0) 
  3)取中间的4位数可得到下一个4位随机数X1 
  4)重复1-3步,即可产生多个随机数 
  这个算法的一个主要缺点是最终它会退化成0,不能继续产生随机数。 
  算法2:线性同余法 
  1)将种子设为X0, 
  2)用一个算法X(n+1)=(a*X(n)+b) mod c产生X(n+1) 
  一般将c取得很大,可产生0到c-1之间的伪随机数 
  该算法的一个缺点是会出现循环。
=====================================================
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值