python - 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 总是在这段代码中返回列表的第一个值?
解决方案
这回答了我的问题。引用答案:
发生的情况是,在 Unix 上,每个工作进程都从父进程继承随机数生成器的相同状态。这就是为什么它们会生成相同的伪随机序列。
在工作进程中使用 random.seed() 解决了这个问题。
推荐阅读
- laravel - 如何使用 laravel 将多个具有不同名称的复选框存储到 mysql
- python - numpy 字符串数组是否比 python 字符串快
- python - 您可以在单个 tkinter 标签中同时显示图像和一些文本吗?
- python - Python:在数据框中映射多个字符串但只有 1 个有效?
- javascript - Javascript 日期在 stringify 之后改变了一天的差异
- r - 在 R Shiny 中定义自定义文本函数
- mysql - 如何制作数据库mysql的转储?
- javascript - 在 ReactJS 中通过数组进行双重映射
- header - 滚动时隐藏粘性标题
- c++ - 使用自动工具在 64 位 ubuntu 16.04 上交叉编译 32 位?