如何在Python中基于指定种子生成含重复值的数字列表?
解决Python指定种子生成含重复值数字列表的问题
嘿,这个问题我之前也踩过坑!你用random.sample()出错的原因很简单:sample是无放回抽样——意思是它不会重复抽取同一个元素,所以当你要生成的样本数量(100000)远大于总体元素数量(range(100)只有100个唯一值)时,Python肯定会抛出ValueError,因为根本没法在不重复的前提下抽10万个元素。
想要生成允许重复、且基于指定种子的随机数字列表,直接用random.choices()就可以了,它是有放回抽样,完美匹配你的需求。
示例代码
import random # 先设置种子,确保每次运行生成的结果完全一致 random.seed(3340) # 从0-99中随机抽取100000个元素(允许重复) test = random.choices(range(100), k=100000)
额外说明
choices的k参数就是你要生成的列表长度,这里设为100000完全没问题;- 如果需要让某些数字出现的概率更高,可以添加
weights参数,比如:# 让数字0出现的概率是其他数字的2倍 test = random.choices(range(100), weights=[2] + [1]*99, k=100000) - 种子一定要在生成随机数之前设置,这样才能保证结果的可复现性。
内容的提问来源于stack exchange,提问作者Tony Lucas
相关产品推荐
相关产品推荐

