python - 如何从 Python 中的列表中获取相同的随机样本
问题描述
我有一个小脚本可以从列表中获取随机样本,但是我希望在运行此脚本时始终获得相同的列表。我该怎么做?
我目前的代码如下,但是每次我运行脚本时,我都会得到一个不同的示例。
import random
def SampleWithoutRepetition(population, sampleSize):
random.seed(100)
result = random.sample(set(
map(lambda attribute: attribute, population)), sampleSize)
print(f"result: {result}")
population = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k']
SampleWithoutRepetition(population, 4)
解决方案
theset()
是一个无序容器,它不会保留您的population
. 像这样,每次重新实例化集合时,您都会从不同的总体中选择完全相同的样本。改为使用list()
,或直接使用
result = random.sample([x for x in population], sampleSize)
在[]
扩展中,您可以使用lambda
. 因此,您的脚本可能如下所示:
import random
random.seed(100)
def SampleWithoutRepetition(population, sampleSize):
func = lambda attribute: attribute
return random.sample([func(x) for x in population], sampleSize)
population = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k']
print(SampleWithoutRepetition(population, 4))
如果将 保留random.seed
在函数中,则每次调用函数时都会返回相同的样本,如果将其放在外部,则每次调用脚本时都会收到相同的样本,如您的问题所要求的那样。
推荐阅读
- java - 程序显示缺少语句。为什么会出现这个错误?
- javascript - 内部/模块/cjs/loader.js:968 抛出错误;^ 错误:找不到模块“../../temp”
- javascript - 使用来自不同 JS 文件的函数时,电子错误“不是函数”
- python - 从 Surprise 中的预定义折叠加载数据时如何构建完整的训练集?
- security - 是否可以在 github 市场中更改操作的版本?
- reactjs - 如何使用 React JSX 在 Typescript 中将通用箭头函数实现为接口属性
- python - AttributeError: 'list' object has no attribute 'rank' 将 Keras 模型转换为 CoreML 时
- c++ - Botan AutoSeded_RNG 无法初始化,未知参考,尽管库已正确链接
- python - C# 服务器和 Python 客户端之间的 Diffie Hellman
- html - 如何在一组嵌套 div 中的任意位置查找具有 XPath 的元素