除了第一次之外如何阻止随机生成?

时间:2016-12-30 07:45:48

标签: java

大家好,我有这个命令:

for (z = 0; z < utenti.length; z++) {
    utenti[z] = rand.nextInt(1000) + 1;
}

在完成1到1000之间的随机数之后,我希望它停止,命令是我程序中的一个功能,但每次我记得它们的数字随机再次出现。有没有办法在第一次之后停止随机生成?

2 个答案:

答案 0 :(得分:1)

  

有没有办法在第一次之后停止随机生成?

是。第一次之后不要执行该代码。例如:

var progress = null

答案 1 :(得分:0)

我不想两次运行这段代码,那么你为什么要两次调用它?

由于这段代码只需执行一次,因此它可能位于错误的位置。它可能属于构造函数或其他东西,具体取决于您的程序结构。

  • 您可以执行Stephen Chis answer中所做的事情,使用boolean来跟踪它是否是第一次。这对你来说可能是最简单的选择。
  • 除了另一个答案之外,还要注意Random类的构造函数接受一个种子。如果保持种子相同,则伪随机数的序列将相同。这样可以节省utenti数组的内存使用量,尤其是对于大型数组。

    private long seed;
    
    private void determineSeed() {
        long seed = new Random().nextLong();
    }
    

    然后使用:

    Random rand = new Random(this.seed);
    for (int i = 0; i < utenti.length; i++) {
        int number = rand.nextInt(1000) + 1);
        // Don't save it to an array, do something with number
    }
    

    缺点是您无法使用序列中的特定元素(例如,utenti[i]),您必须按顺序使用随机数。