Java 使用随机类,但我的变量为';不是随机的吗? for(int i=0;i

Java 使用随机类,但我的变量为';不是随机的吗? for(int i=0;i,java,math,random,Java,Math,Random,每次我运行代码时,它都会给出相同的结果,并且不是随机的?我重新分配了randNum,这样它将变成一个随机数,但它似乎没有改变?您可以通过调用为RNG设定一个常数。对于同一种子,人们总是会得到相同的“随机数”序列。不要设定种子(…=new Random();),值应为“Random” 关于随机性和编程的评论: 没有外部熵发生器,计算机通常无法生成真正的随机性。因此,随机数生成器使用初始种子生成伪随机序列。该序列通常满足真正随机序列所期望的所有条件,但一旦种子已知,该序列就具有确定性。有关更多信息

每次我运行代码时,它都会给出相同的结果,并且不是随机的?我重新分配了randNum,这样它将变成一个随机数,但它似乎没有改变?

您可以通过调用为RNG设定一个常数。对于同一种子,人们总是会得到相同的“随机数”序列。不要设定种子(
…=new Random();
),值应为“Random”


关于随机性和编程的评论:


没有外部熵发生器,计算机通常无法生成真正的随机性。因此,随机数生成器使用初始种子生成伪随机序列。该序列通常满足真正随机序列所期望的所有条件,但一旦种子已知,该序列就具有确定性。有关更多信息,请访问。

Random rand=new Random(1000)
告诉java根据初始种子1000创建一个随机种子。这会产生随机但仍可复制的结果


如果希望每次执行的值不同,请使用
Random rand=new Random()

尝试使用此代码获取随机数:

 for(int i = 0; i < emojiCnt; i++){

            Random rand = new Random(1000);
            int randNum = rand.nextInt((3) + 1);
            switch (randNum){
                case 1:
                    //Code
                case 2:
                    //Code
                case 3:
                    //Code
                default:
                    //Code
            }
            randNum = rand.nextInt((10) + 1);
        }

此代码将为您带来0到1000之间的随机值

您正在随机构造函数中使用相同的种子。如果希望结果不同,请不要这样做,而是使用默认构造函数。副本中的许多答案更为详细。那么,为什么随机数不需要种子?因为您在nextInt()函数中设置了最大值,所以种子不做任何事?!这取决于您将如何在代码中实现random,但这是我使用它的方式,您可以在这里找到有关它的更多信息:如果它解释了所提供代码的工作原理,这将是一个更好的答案。仅仅为他们编写代码可能有助于问题的解决,但对其他读者没有多大帮助。
Random rand = new Random();
int maxNumber = 1000;
rand.nextInt(maxNumber)