【问题标题】:How to get a random list every time?如何每次都得到一个随机列表?
【发布时间】:2016-04-23 04:26:57
【问题描述】:

我正在尝试从委员会中随机列出 3 名学生(小组委员会)。然后,我想打印一个新的随机小组委员会 1000 次。现在,我拥有的代码正在打印同一个小组委员会 1000 次。我怎样才能解决这个问题?

import random

undergrads = ["ug_1", "ug_2", "ug_3", "ug_4"]
grads = ["g_1", "g_2"]
committee = undergrads + grads

subcommittee = []
for i in range(3):
    add_sub = random.choice(committee)
    subcommittee.append(add_sub)

for j in range(1000):
    print subcommittee

【问题讨论】:

  • 您是否考虑过将代码的随机化部分放入循环中...?
  • 我很好奇为什么您认为重复打印 list 每次都会产生随机结果。

标签: python python-2.7 random


【解决方案1】:

发生这种情况是因为您正在创建一个包含 3 个随机成员的 subcommittee,然后重新打印该随机预定义列表 1000 次(这里想到一个 xkcd):

要解决此问题,请执行以下操作:

for i in range(1000):
    subcommittee = []
    for i in range(3):
        add_sub = random.choice(committee)
        subcommittee.append(add_sub)
    print subcommittee

你也可以这样做:

for i in range(1000):
    print([random.choice(committee) for _ in range(3)])

或者更好的是,使用random.sample

for i in range(1000):
    print(random.sample(committee, 3))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-15
    • 1970-01-01
    相关资源
    最近更新 更多