如何使用带循环的种子生成不同的随机数?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用带循环的种子生成不同的随机数?相关的知识,希望对你有一定的参考价值。

我正在制作一本简单的成绩单,它应该为每个学生的每个作业生成随机数。它生成随机数,但每个循环的数字相同。这是我到目前为止的代码:

import java.util.Random;
import java.util.Scanner;

public class Testing {
public static void main(String args[]) {
    Scanner sc = new Scanner(System.in);
    String choice = "y";
    while (choice == "y")   { 

        System.out.println("Please enter a number for the random number generator seed:");
        //User input for seed
        int seed = sc.nextInt(); 
        //Initializing Seed
        Random randomSeed = new Random(seed);

        //Prompting for number of students
        System.out.println("Please enter the no of students for whom you have grade information: "); 
        //User input for number of students
        int numberOfStudents = sc.nextInt();

        String homework = "HW";

        System.out.printf("%16s", homework);
        System.out.println("
");

        //Finding random value for Homework.
        int randomHomework = randomSeed.nextInt(((600-300) + 1) + 300); 

        //Creates an array that has 7 rows for points
        //Will eventually add more values into array
        int points [][] = new int[6][3]; 

        //for loop that starts at 1 and prints number of students user entered
        for (int i = 0; i < numberOfStudents; i++) {
            System.out.print("Student #" + (i + 1) + "    ");

            points[0][2] += randomHomework;
            System.out.print(randomHomework + "    ");

            System.out.println("
");
            }//End of for loop

        choice = sc.nextLine().toUpperCase();
        }//End of while loop
    }
}

我为每个学生得到540分,但每次学生循环时我应该得到300到600之间的随机值。

谢谢!

答案

将你的Random实例放在循环外面。你正在做的是使用相同的种子在每次迭代中创建一个随机的新实例。种子确定要生成哪些值,并且使用相同的种子,每次都会得到相同的数字。

以上是关于如何使用带循环的种子生成不同的随机数?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Python 的随机数生成器与本地种子一起使用?

使用连续种子生成统一的随机数?

为每次运行代码设置不同的种子

R实战 第十二篇:随机数

如何使用 TensorFlow 获得稳定的结果,设置随机种子

golang连续生成随机数重复