java random()种子数_Random()总是使用种子选择相同的数字

我有一个非常奇怪的错误,我试图解决 . 我会尽力解释 .

我有一个 class ,在那个 class 我有一个方法可以选择一个随机数 . 每次运行应用程序时,随机数生成必须生成完全相同的数字序列(不同的数字,但无论何时运行应用程序,都以相同的顺序出现) .

因此我需要使用种子 .

我的代码看起来像这样:

public class Tree{

Random rand = new Random(12345);

///...code...///

public Tree randomNode() {

//HERE IS THE ERROR

int r = rand.nextInt(this.size);

if (r == 0) {

return this;

}

else if (left != null && 1 <= r && r <= left.size) {

return left.randomNode();

}

else {

return right.randomNode();

}

}

}

我有一个使用它的帮助器类,看起来有点像这样:

public Crossover(Tree p1, Tree p2)

{

Tree subtreeP1 = p1.randomNode();

Tree subtreeP2 = p2.randomNode();

}

我的主要方法看起来有点像这样:

for(i=0;i

{

Crossover c = new Crossover(p1,p2);

}

在main方法的第一个循环中, r 的数字随机生成并且很好 . 但是,在第二个循环(以及随后的所有循环)是我遇到问题的地方 . 问题在于 int r = rand.nextInt(this.size); - 在第二次循环之后我总是得到0无论如何 .

If I remove the seed, all works well . 如果我包含种子,我会在第一次循环后开始逐渐变为0 .

我怎样才能继续使用种子,但获得随机数?我做错了什么?

编辑:

this.size 指的是我树的大小 . 当我得到 r 为0时,我确保它不为零 . 我想指出的是,当我简单地删除数字种子时,它工作正常,并且随机数生成工作正常 . 当我添加种子时,我遇到了问题 .

EDIT #2 好的,按照要求,我已经整理了一个小程序来说明我的问题 . 按原样运行它 . 一次与种子一次,没有 .

import java.util.*;

public class Problem{

public static void main(String args[])

{

for(int i=0; i<100; i++)

{

Clas c1 = new Clas();

Helper h = new Helper(c1);

System.out.println(h.getR());

}

}

}

class Helper

{

int r;

Helper(Clas c)

{

r = c.method();

}

public int getR()

{

return r;

}

}

class Clas

{

Random rand = new Random(1825897);

Clas()

{

}

public int method()

{

int r = rand.nextInt(10);

return r;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值