是否可以在Java中执行此操作?我想生成一个随机数,使得给定范围例如:1到70之间 - 每次生成随机数时,它应该从生成结果中排除。
所以[1,70] rand = 56(下一次不应考虑56)
[1,70] = 63(现在56,63应排除在代码运行之前)
答案 0 :(得分:3)
这相当于改组包含[1..70]的数字数组,然后逐个处理它们。在Google上查找“shuffle algorithm”。这是一个链接http://www.vogella.de/articles/JavaAlgorithmsShuffle/article.html
答案 1 :(得分:1)
我在这里问了同样的问题:How can I generate a random number within a range but exclude some?
一般策略就像用70个值填充数组一样。只需删除您根据上述链接随机生成的值。
答案 2 :(得分:1)
您可以将范围填充到数组中并随机播放数组。对于非常大的范围,这将是低效的
答案 3 :(得分:1)
另一个简单的替代方案,使用HashMaps跟踪随机数。 它有点快速和肮脏。
HashMap<Integer,Integer> hmRandomNum = new HashMap<Integer,Integer>();
Integer a = < generate random number>
if( hmRandomNum.get(a) == null)
{
hmRandomNum.put(a,a);
}
else
{
// ignore this random number. this was already selected and present in the hashmap.
}
//Iterate depending on how many numbers you want.