如果我使用 python's random.shuffle
打乱一个小列表,我也得到了未经洗牌的结果。
import random
for i in range(10):
ori = [1, 2, 3]
per = ori[:]
random.shuffle(per)
print i, per, (per == ori) or ""
这是一个示例输出:
0 [1, 3, 2]
1 [1, 2, 3] True
2 [3, 1, 2]
3 [2, 3, 1]
4 [1, 2, 3] True
5 [2, 3, 1]
6 [3, 2, 1]
7 [2, 1, 3]
8 [2, 1, 3]
9 [2, 1, 3]
在研究了算法细节之后,我明白情况一定是这样的 [1] , [2] 。但我真的想以编程方式获得一个小的未排序列表(例如 3 到 6 个项目)。
您认为实现此目的的最佳方法是什么?
最佳答案
如果您必须排除原始排序,您可以简单地重试随机播放,直到 per != ori
。
关于python - 洗牌一小组项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25709478/