Java 随机数生成查询

Java 随机数生成查询,java,random,Java,Random,我使用以下代码生成随机数: long randNo = Math.round(Math.random() * 10000); 我在某些情况下发现了重复项。有可能生成相同的数字吗?是的,有可能。如果需要生成10000个从0到9999的不同随机数。您可以生成包含10000个连续号码的列表,然后调用集合。对其进行洗牌。是的,这是可能的。如果需要生成10000个从0到9999的不同随机数。您可以生成包含10000个连续数字的列表,然后调用集合。在该列表上洗牌。对于随机数字,该范围内的所有数字的可能性相

我使用以下代码生成随机数:

long randNo = Math.round(Math.random() * 10000);

我在某些情况下发现了重复项。有可能生成相同的数字吗?

是的,有可能。如果需要生成10000个从0到9999的不同随机数。您可以生成包含10000个连续号码的列表,然后调用集合。对其进行洗牌。

是的,这是可能的。如果需要生成10000个从0到9999的不同随机数。您可以生成包含10000个连续数字的列表,然后调用集合。在该列表上洗牌。

对于随机数字,该范围内的所有数字的可能性相同。这意味着如果你得到一个数字,下一个值很可能会像第一次一样出现

顺便说一句:在你的例子中,使用舍入并不是一个好主意,因为数字1到9999的可能性相等,但是数字0和10000的可能性是它们只在半舍入或半舍入时出现的一半

更有效的模式是使用

Random rand = new Random();

// as needed
int num = rand.nextInt(10000); // will be [0, 10000)
如果需要生成唯一编号,可以使用Collections.shuffle

List<Integer> nums = new ArrayList<Integer>();
for(int i = 0; i < 10000; i++) nums.add(i);
Collections.shuffle(nums);
List nums=new ArrayList();
对于(int i=0;i<10000;i++)nums.add(i);
收藏。洗牌(nums);

这将以随机顺序为您提供多达10000个唯一的数字。

对于随机数字,该范围内的所有数字都具有相同的可能性。这意味着如果你得到一个数字,下一个值很可能会像第一次一样出现

顺便说一句:在你的例子中,使用舍入并不是一个好主意,因为数字1到9999的可能性相等,但是数字0和10000的可能性是它们只在半舍入或半舍入时出现的一半

更有效的模式是使用

Random rand = new Random();

// as needed
int num = rand.nextInt(10000); // will be [0, 10000)
如果需要生成唯一编号,可以使用Collections.shuffle

List<Integer> nums = new ArrayList<Integer>();
for(int i = 0; i < 10000; i++) nums.add(i);
Collections.shuffle(nums);
List nums=new ArrayList();
对于(int i=0;i<10000;i++)nums.add(i);
收藏。洗牌(nums);

这将以随机顺序为您提供多达10000个唯一的数字。

ref您似乎不理解“随机”的含义。当然,它可能会生成相同的数字。随机性和唯一性是两个完全不同的东西。反问:如果你执行这行代码10001次,它至少不会产生一次重复值的可能性有多大?参考文献,你似乎不明白“随机”是什么意思。当然,它可能会产生相同的数字。随机性和唯一性是两个完全不同的东西。反问:如果你执行这行代码10001次,它至少不会产生一次重复值的可能性有多大?谢谢。有没有办法在上面的代码中生成唯一的数字?谢谢你,谢谢。有没有办法在上面的代码中生成唯一的数字?提前谢谢