我已经查找了如何将0-99添加到数组中。但是,我的任务是1-1000000。我只是继续得到非常大的数字和不小的数字。是因为获得大数字的机会要高得多吗?我只是想确保我做得对。在此先感谢您的帮助!
int a[]= new int[50];
for(int i = 0; i < 50; i++) {
a[i] = (int)(Math.random() * 10000000);
}
答案 0 :(得分:0)
如果你希望得到一个低于1000的数字,那么有1/10000的机会,相当于0.01%。您的代码很好,但使用这些设置获得较少的数字是非常不可能的
答案 1 :(得分:0)
取决于你用小号码打电话的内容。
例如,数字低于1000意味着它需要适应低于0.1%的间隔1000,它只是100万的所有数字的0.1%。
此外,请注意,这样您将获得0到999999(含)之间的数字。要获得1-1000000,您需要添加1:
a[i] = (int)(Math.random() * 10000000)+1;
答案 2 :(得分:0)
是的,大数字将占据主导地位。那是因为一半的数字超过500,000。同样,9/10的数字超过100,000。因此,9/10的数字将有六位数。
答案 3 :(得分:0)
[问题的某种正交解决方案]
您可以考虑的一个选项是在根据您的预期分布添加数字后对阵列进行混洗,这可以是所有数字添加一次/某些数字多次添加/某些素数多次等等。
我个人用它来报道游戏开发的一些案例。
这是一个可以帮助你洗牌的答案:Credits
List<Integer> solution = new ArrayList<>();
for (int i = 1; i <= 6; i++) {
solution.add(i);
}
Collections.shuffle(solution);