python - 洗牌一小组项目

标签 python random

如果我使用 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/

相关文章:

python - 如何在 Flask 中使用 psycopg2 (postgresql) 的连接池

python - python selenium 驱动程序中的 "Message: unknown error: cannot focus element"

python - 发布一个最小环境的Python程序

swift - SpriteKit - 在随机位置创建而不重叠

python - 无界本地错误: Why Does it occur when a global variable is redefined inside a function but not when it is merely referenced?

python - 如何更改 Tkinter OptionMenu 小部件的菜单背景颜色?

javascript - 带区间提示和修复的随机数

java - 不包括零的范围内的随机数

javascript - 无法通过将随机值从数组复制到对象来获得稳定的结果

java - 类型转换 Math.random?