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