random()总是产生相同的数字?

时间:2014-02-26 22:24:00

标签: java user-interface

这是我的代码。

private int getRandomNumber(int start, int end) {
    Random r = new Random();
    int num = r.nextInt(end-start+1)+start; 
    return num;
}   

我正在实现一个带有按钮的GUI,每次单击按钮时都会生成随机密码长度。所以我设置了passlength:

passLength = getRandomNumber(min,max);

当我打印出passLength时,每次点击它时它会给我相同的数字(实际上是最小数字)。如何制作它以便每次点击都可以生成不同的数字?

2 个答案:

答案 0 :(得分:1)

每次都不要创建新的随机数生成器(new Random())。创建一个,将其分配给持久变量(成员或静态),并重复调用它。

答案 1 :(得分:0)

我怀疑你的问题在别的地方。我测试了以下代码,得到了预期的结果:[start,end]中的psuedorandoms。实例化Random类一次或每次都没有区别。

import java.util.Random;

public class TestRandom {

    public TestRandom () {
        for (int i = 0; i < 30; i++) {
            System.out.print(getRandomNumber(0,200) + " ");
        }
    }

    private int getRandomNumber(int start, int end) {
        Random r = new Random();
        int num = r.nextInt(end-start+1)+start;
        return num;
    }
}

样本结果如下:

190 177 137 184 146 177 54 110 148 172 127 130 110 152 161 197 181 156 33 191 0 62 130 31 35 82 3 123 88 122

101 160 145 174 179 81 73 78 84 10 59 14 189 145 41 198 133 72 129 96 79 104 184 178 55 56 142 14 70 14

109 18 136 20 13 47 67 0 96 179 29 127 11 128 147 143 92 160 144 194 192 194 89 25 67 181 102 154 33 152