【发布时间】:2011-03-01 11:58:07
【问题描述】:
我知道类似的问题经常出现,并且可能没有明确的答案,但我想从可能无限的数字子集(可能是 0-20 或 0-1,000,000)中生成五个唯一的随机数。
唯一的问题是我不想运行while 循环或填充数组。
我当前的方法是从一个子集中减去最后五个数字简单地生成五个随机数。如果任何数字相互匹配,则它们将转到子集末尾的各自位置。因此,如果第四个数字与任何其他数字匹配,它将设置为从最后一个数字开始的第四个。
有没有人有一种“足够随机”并且不涉及昂贵的循环或数组的方法?
请记住,这是一个好奇心,而不是一些关键任务问题。如果每个人都没有发布“您为什么遇到这个问题?”,我将不胜感激。答案。我只是在寻找想法。
非常感谢!
【问题讨论】:
-
我的意思是我试图避免整个
while循环方法,其中有人在while循环中生成数字,直到他们得到一个唯一的数字。我知道获得重复数字的可能性很小,但这是一种好奇心,我并不是在寻找一个假设执行时间无限的解决方案。 -
你意识到它花费无限时间的可能性不是很大:p
-
是的,我同意,但就像我说的那样,我不太担心找到一个可用的解决方案,因为我已经有了一个。我正在寻找最好的解决方案或我尚未阅读或想到的东西。如果我只想满足于“足够好”的东西,问一个问题有什么意义?我希望扩大我对如何解决几个问题的了解,而不是一遍又一遍地做同样的“它有效”的解决方案。
-
@Col。弹片:我已经从这篇文章中学到了一些新方法,所以我认为值得问一下,而不是因为尝试而受到侮辱。