首页 > 解决方案 > Python random.choice 总是选择第一个值

问题描述

AUDIO_FILES = [
    os.path.join(settings.AUDIO_FILES_DIR, "1.mp3"),
    os.path.join(settings.AUDIO_FILES_DIR, "2.mp3"),
    os.path.join(settings.AUDIO_FILES_DIR, "3.mp3"),
    os.path.join(settings.AUDIO_FILES_DIR, "4.mp3"),
    os.path.join(settings.AUDIO_FILES_DIR, "5.mp3"),
]

def _get_audio_clip():
    audio_file = random.choice(AUDIO_FILES)
    audio_clip = AudioFileClip(audio_file)
    return audio_clip

_get_audio_clip()

谁能指出为什么 random.choice 总是在这段代码中返回列表的第一个值?

标签: pythonpython-3.xrandom

解决方案


回答了我的问题。引用答案:

发生的情况是,在 Unix 上,每个工作进程都从父进程继承随机数生成器的相同状态。这就是为什么它们会生成相同的伪随机序列。

在工作进程中使用 random.seed() 解决了这个问题。


推荐阅读