java中生成的随机数

java中生成的随机数,java,random,Java,Random,我正在使用random class对象生成一组随机数,但生成的随机数集都是不同的,即没有一个具有相同的值。 我已经运行了很多次程序,但每次生成的随机值都不同。i、 它们都不一样 int i,j,ex,counter=0; int size=7,count=1; boolean track=false; List<Integer> digits = new ArrayList<Integer>(size); for(i=0;i<cou

我正在使用random class对象生成一组随机数,但生成的随机数集都是不同的,即没有一个具有相同的值。 我已经运行了很多次程序,但每次生成的随机值都不同。i、 它们都不一样

 int i,j,ex,counter=0;
    int size=7,count=1;
    boolean track=false;
    List<Integer> digits = new ArrayList<Integer>(size);
    for(i=0;i<count;i++)
    {
        track=false;
        Random rn = new Random(i);
        for (j = 0; j < size; j++)
        {
            int k = rn.nextInt(364);
            digits.add(k);
        }


       for (j = 0; j < digits.size(); j++)
        {
          System.out.println(digits.get(j));
        }


        for (int m=0;m<digits.size();m++)
        {
            for (int n=m+1;n<digits.size();n++)
            {
                if (digits.get(m) == digits.get(n))
                {
                    counter++;
                    //System.out.println(counter);
                    track=true;
                    break;
                }

            }
            if(track)
                break;
        }
    }

    System.out.println(100*(double)(counter/count));

}
inti,j,ex,计数器=0;
int size=7,count=1;
布尔轨迹=假;
列表位数=新的ArrayList(大小);
对于(i=0;ijave中的Random()类在代码中生成一个介于0到364之间的随机数。
这意味着,在您的代码中,在365次生成一个数字之后,您将100%确定有2个整数相互匹配,但这不太可能需要365次

我希望你现在了解随机函数的工作原理了

这可能是“数字”大小为5的函数的可能输出:

56 201 78 12
360

歧义-->
每次生成的随机值都是相同的。也就是说,它们没有一个是相同的。
那么,什么是
i
?如果想要相同的值,就必须使用相同的种子。Javas
Ramdom
类是一个伪随机生成器。生成的数字序列取决于通过构造函数传入的种子。default构造函数使用
new Date().getTime()
作为种子。由于您在每次程序运行中给出与种子相同的数字(
new Random(i)
),因此始终会得到相同的“Random”序列结果。当然,你可以在公共API中查找这个。随机数应该是随机的,也就是说,不一样。你可以通过给随机数生成器相同的种子来获得相同的数字集。@OP你的意思是问为什么在生成的样本中生成的数字都不相等吗?我正在解决一个问题w在这里,我需要找出生成的随机数集合包含两个或更多相同随机数的次数。我每次都得到零输出。它是否返回“6”例如,当你生成370个数字时?如果没有,你能发布代码吗,因为故障可能就在那里。当然,在找到重复之前,不需要364个随机数,这是最坏的情况,也是极不可能的。确实不太可能,但我猜这是他的意思。问题很可能存在于cod的另一部分正如乔纳萨农所说