显然xrange更快但我不知道为什么它更快(除了轶事到目前为止没有证据表明它更快)或者除此之外还有什么不同
for i in range(0, 20):
for i in xrange(0, 20):
Run Code Online (Sandbox Code Playgroud) 我有这个清单:
colors = ["R", "G", "B", "Y"]
Run Code Online (Sandbox Code Playgroud)
我希望从中获得4个随机字母,但包括重复.
运行这个只会给我4个独特的字母,但绝不会有任何重复的字母:
print(random.sample(colors,4))
Run Code Online (Sandbox Code Playgroud)
如何获得4种颜色的列表,可能重复的字母?
我需要n
从一组N
(where 0 < n < N
)中随机选择记录.
一种可能的算法是:
遍历列表并为每个元素,使选择的概率=
(number needed) / (number left)
因此,如果您有40个项目,则第一个项目有
5/40
可能被选中.如果是,下一个有
4/39
机会,否则它有5/39
机会.当你到达目的地时,你会得到5件物品,而且在此之前你通常会拥有所有物品.
假设一个好的伪随机数发生器,这个算法是否正确?
注意
stackoverflow上有很多这类问题(其中很多都被标记为C#中List <T>中选择N个随机元素的重复).
上面的算法经常被提出(例如Kyle Cronin的答案)并且总是受到质疑(例如,见 这里,这里,这里,这里 ......).
我可以对此事做最后的决定吗?
python ×2
algorithm ×1
correctness ×1
loops ×1
python-2.x ×1
python-3.x ×1
random ×1
range ×1
xrange ×1