gpt4 book ai didi

java - 生成一定范围内不重复的随机数

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:26:35 25 4
gpt4 key购买 nike

我目前正在创建一个应用程序,它将生成随机数。所以每次都会生成三个数字num1、num2和num3。这些数字不应重复。例如,如果 num1 = 1 而不是 num2 和 num3 不能等于 1。我试过这段代码,它会显示三个不同的数字,范围从 0-2。它的工作。但是我想生成 1-3、2-4、3-5 等范围内的随机数。那么我如何通过使用下面的代码来实现这一点。请帮助我,因为我是新手。谢谢。

for(int i=0; i<images.length; i++)
{
num[i] = (int)(Math.random()*3);

if (i == 0)
{
if(num[i]== 0)
images[i].setImageResource(R.drawable.zero);
else if(num[i]==1)
images[i].setImageResource(R.drawable.one);
else
images[i].setImageResource(R.drawable.two);
}

else
{
while (num[i] == num[i-1] || num[i] == num[0] )
num[i] = (int)(Math.random()*3);


if(num[i]==0)
images[i].setImageResource(R.drawable.zero);
else if(num[i]==1)
images[i].setImageResource(R.drawable.one);
else
images[i].setImageResource(R.drawable.two);

}
}

最佳答案

如果范围内的所有数字都创建一个列表,然后打乱列表:

List<Integer> numbers = new ArrayList<>();
// eg for range 3-5
for (int i = 3; i <= 5; i++)
numbers.add(i);
Collections.shuffle(numbers);

现在以新的(随机)顺序使用它们。

除非您的范围非常大(数百万),否则这会正常工作。


Java8版本:

List<Integer> numbers = IntStream.rangeClosed(3, 5).boxed().collect(Collectors.toList());
Collections.shuffle(numbers);

关于java - 生成一定范围内不重复的随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21213577/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com