如何从范围(0,99)中选择10个不同的整数

Ric*_*nop 2 python

我想从0到99选择10个随机整数.我知道我可以使用:

random.randint(a, b)
Run Code Online (Sandbox Code Playgroud)

但是如何告诉randint()我只想要不同的整数.

我是否必须在每个随机生成后检查以查看是否已生成整数并再次调用该方法?这似乎不是一个最佳解决方案.

Vin*_*ard 10

from random import sample

sample(range(0, 100), 10)
Run Code Online (Sandbox Code Playgroud)

  • 如果你想使用大范围,你可以使用`xrange`,如[docs](http://docs.python.org/library/random.html#random.sample)中所述,以避免分配巨大的您不关心的数字列表. (2认同)

tva*_*son 8

这是与语言无关的一般策略.生成一个从0到99的100个条目的数组.选择0到99之间的随机数,并将该位置的条目与位置0处的元素交换.然后从i到99连续选择一个随机数,其中i = 1到9并将该位置的元素与元素i处的元素交换.你的10个随机数位于数组的前10个位置.

  • http://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle#The_modern_algorithm (2认同)