【问题标题】:Python random.choice always selects first valuePython random.choice 总是选择第一个值
【发布时间】:2020-03-18 17:00:58
【问题描述】:
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 在这段代码中总是返回列表的第一个值?

【问题讨论】:

  • 不,它没有,你做了多少次尝试?从choice 打印结果你会看到;)
  • 它会一次又一次地发生。我必须做错事,每次都选择第一个值。
  • 什么意思连选择都不做? random.choice 正在选择一个文件。
  • 你用过import random吗?你需要这个才能使 random.choice() 工作

标签: python python-3.x random


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-17
    相关资源
    最近更新 更多