我目前正在创建一个应用程序,它将生成随机数。所以每次都会生成三个数字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/