随机数生成和排除生成的数字

时间:2011-04-28 03:37:23

标签: java


是否可以在Java中执行此操作?我想生成一个随机数,使得给定范围例如:1到70之间 - 每次生成随机数时,它应该从生成结果中排除。
所以[1,70] rand = 56(下一次不应考虑56) [1,70] = 63(现在56,63应排除在代码运行之前)

4 个答案:

答案 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.