2016-04-23 110 views
1

我想從委員會做出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 
+3

你有沒有考慮把你的代碼的隨機部分內環路...? – Dolda2000

+2

我很好奇你爲什麼認爲重複打印'list'會每次都會產生隨機結果。 – TigerhawkT3

回答

5

發生這種情況,因爲你正在創建一個subcommittee與3個隨機成員,然後重新打印,它隨機預設列表1000倍(一個XKCD想到這裏):(An xkcd comes to mind here)

爲了解決這個問題做一些像:

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))