java random的问题
来源:百度知道 编辑:UC知道 时间:2024/06/23 11:56:25
加个47什么意思,看他的解释没看明白
种子是什么意思。。。?就是从47开始随即生成数么?不加又会怎样?
这个47就是一个种子。你也可以用其它的整数如:1,48。。。。。等
不同的种子会产生不同的随机数。thinking in java的作者他用了一个47.也没什么特殊。用其它也可以
补------------
不是从47开始生成数。这么说吧:
Random() rand1=new Random(47);
Random() rand2=new Random(27);
则rand1.nextInt()的值不会等于rand2.nextInt()
就是加了一个种子后就可以使你调用方法后产生的数值不相同。
Random() rand=new Random();这样不加数字也可以。种子就是用来区分各个Random对象吧,可以说。
下面是官方解释:
“此类的实例用于生成伪随机数流。此类使用 48 位的种子,使用线性同余公式对其进行修改(请参阅 Donald Knuth 的《The Art of Computer Programming, Volume 2》,第 3.2.1 节)。
如果用相同的种子创建两个 Random 实例,则对每个实例进行相同的方法调用序列,它们将生成并返回相同的数字序列。为了保证属性的实现,为类 Random 指定了特定的算法。为了 Java 代码的完全可移植性,Java 实现必须让类 Random 使用此处所示的所有算法。但是允许 Random 类的子类使用其他算法,只要其符合所有方法的常规协定即可。
”
简单的说 每次产生随机数和这个种子有关 要想了解细节那么要看厚厚的一本书啦 要想更加随机化 可以每次都指定不同的种子:
Random r = new Random();
r.setSeed(r.nextInt(48) + 1);
r.XX();
=====================================================================
Random
public Random(long seed)使用单个 long 种子创建一个新的随