aml*_*ndh 2 java random algorithm range
我正在创建一个应用程序,它将生成随机数.所以每次它会产生三个数字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);
}
}
Run Code Online (Sandbox Code Playgroud)
Boh*_*ian 10
如果范围内的所有数字都创建一个列表,然后将列表洗牌:
List<Integer> numbers = new ArrayList<>();
// eg for range 3-5
for (int i = 3; i <= 5; i++)
numbers.add(i);
Collections.shuffle(numbers);
Run Code Online (Sandbox Code Playgroud)
现在以新的(随机)顺序使用它们.
除非你的范围非常大(数百万),否则这样可以正常工作.
Java8版本:
List<Integer> numbers = IntStream.rangeClosed(3, 5).boxed().collect(Collectors.toList());
Collections.shuffle(numbers);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12633 次 |
| 最近记录: |