【问题标题】:Randomly selecting N number of items from a list, duplicates possible从列表中随机选择 N 个项目,可能重复
【发布时间】:2018-02-12 04:41:49
【问题描述】:

我正在尝试从另一个列表 b 生成随机项目列表。允许重复。我不能使用 random.sample 因为 N 可以超过列表 b 中的项目数。
我在下面写了一些代码:

def generate_random_sequence(n):
   population = []
   for i in xrange(n):
       b = random.choice(stuff)
       population.append(b) 

但是我真的很担心它的性能,因为它会执行很多次。 Random 库中是否有执行此任务的方法?还是有更优化的方式来完成这项任务?

【问题讨论】:

  • 请向我们展示您的列表是什么样子的。
  • 改用random.sample
  • 只使用随机模块你不能做得更好,尽管population = [random.choice(stuff) for _ in xrange(n)] 更具可读性。

标签: python random


【解决方案1】:

您可以在numpy 库中使用random.choice

In [3]: np.random.choice([1,5,6],10)
Out[3]: array([6, 5, 6, 6, 6, 6, 1, 6, 1, 6])

【讨论】:

  • 是的,random.sample 是要走的路,但您在这里使用了numpy 版本...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-29
  • 1970-01-01
  • 2012-09-11
  • 1970-01-01
相关资源
最近更新 更多