java random的问题
在看thinkinjava里41页有句代码random()rand=newrandom(47);加个47什么意思,看他的解释没看明白...
在看think in java里41页有句代码random() rand=new random(47);
加个47什么意思,看他的解释没看明白 展开
加个47什么意思,看他的解释没看明白 展开
5个回答
2013-09-19
展开全部
这个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 类的子类使用其他算法,只要其符合所有方法的常规协定即可。
”
不同的种子会产生不同的随机数。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 类的子类使用其他算法,只要其符合所有方法的常规协定即可。
”
2013-09-19
展开全部
亲,你听说过种子吗?我们在小时候,上课老师高数我们,随机数是随机的没有规律的
java的随机数是虚的或者说是假的,你必须先给他一个数Random(3),就象这样,他开始进行推算
产生的范围1000
下在此随机数生成器序列中0(包括)和1000(不包括)之间均匀分布的int值。
java的随机数是虚的或者说是假的,你必须先给他一个数Random(3),就象这样,他开始进行推算
产生的范围1000
下在此随机数生成器序列中0(包括)和1000(不包括)之间均匀分布的int值。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-09-19
展开全部
自己看API嘛! 尽量学会自学... 这种问题在api里面都有解释...
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-09-19
展开全部
种子数只是随机算法的起源数字,和生成的随机数字的区间无关
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-09-19
展开全部
我正在学java啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询