Python中如何生成允许元素重复的随机列表?
生成允许重复的随机列表的方法
嘿,这个问题问得好!Python的random模块里有不少方法能满足你要的允许元素重复的随机列表需求,我给你整理几个最实用的:
random.choices()(Python 3.6及以上)
这是官方专门为「有放回抽样」设计的方法,完美匹配你的需求。比如要从range(10)里生成4个可重复的随机元素,代码很简单:import random result = random.choices(range(10), k=4)其中
k参数用来指定你要生成的元素个数,返回的列表里元素完全可能重复。如果是从你提到的自定义列表(比如["item1", "item2", ..., "item10"])里选,直接把列表传进去就行:items = ["item1", "item2", "item3", "item4", "item5", "item6", "item7", "item8", "item9", "item10"] result = random.choices(items, k=4)循环调用
random.randint()或random.randrange()(兼容旧版Python)
如果你用的是Python 3.6之前的版本,没有choices()方法,可以用循环来逐个生成随机元素:import random # 用randint,范围是闭区间[0,9] result = [random.randint(0, 9) for _ in range(4)] # 或者用randrange,左闭右开[0,10),效果和上面一致 result = [random.randrange(10) for _ in range(4)]这种方式每次生成一个独立的随机数,自然会出现重复的情况。
别踩坑:不要用
random.sample()来实现重复抽样
顺带提一句,random.sample()本身是「无放回抽样」的实现,硬要让它生成重复元素只会徒增麻烦,完全没必要,直接用上面两种方法就好。
内容的提问来源于stack exchange,提问作者Aadil
相关产品推荐
相关产品推荐

