2011-11-17 101 views
0

我有40張牌。 10黃色。 10紅。 10個藍色和10個綠色。我需要挑選25張隨機卡片,然後給他們500人。每個人都需要猜測25張卡片中每張卡片的正確顏色。Python中的隨機猜測

這是我迄今所做的:

import random   
    nSuits = 4 # yellow/red/blue/green 
    nCards = 25 # Number of random cards 
    nPlayers = 500 

    def Random_guess(): 
     randomCards = [random.randrange(nSuits) for i in range(nCards)] 
     randomGuesses = [random.randrange(nSuits) for i in range (nPlayers)] 

randomCards根據外殼工作正常,但我不能找到一種方法,隨機卡屬性給每個球員,從他們的猜測4種顏色。 有什麼建議嗎?

+0

人們是一次一次地或全部提前猜測?他們是否意識到他們所面對的套牌中最多可以有10張每種顏色的牌? –

+0

他們一次猜測一個。如果他們沒有做到這一點,他們是否會有所作爲?他們不知道每種顏色最多可以有10張牌。 – user1040563

+0

如果他們確實知道,並且他們每次都猜出一張(如果模糊不清),他們就不會猜測他們已經看過十次的顏色。 –

回答

0

如果我理解正確的,每個球員需要25個猜測(每卡):

randomGuesses = [[random.randrange(nSuits) for i in range (nCards)] for j in range(nPlayers)] 

這將產生nPlayer嵌套列表,每個nCards「猜測」列表。

randomGuesses[i][j] 

是第i個玩家的第j個猜測。

+0

Thenk你!我在一個小時前嘗試過類似的東西,但整數都顯然搞砸了:/ – user1040563

0

創建Class是一種很好的方式,可以讓所有的東西「擁有」(或「做」)相同的東西。

一個常見的比喻是一家工廠的一個:它是一個對象工廠,生產的對象,然後可以通過屬性,角色,職責定製的模板等

首先,初始化類:

import random 

nSuits = 4 # yellow/red/blue/green 
nMaxSuits = 10 # only ten of each yellow, red, blue, green 
nCards = 25 # Number of random cards 
nPlayers = 500 

deck = [suit for suit in range(nMaxSuits) for suit in range(nSuits)] 

class CardPerson(object): 
    def __init__(self, cards): 
     self.cards = cards 
    def guess(self): 
     #use [deck] list above, it has all good cards 
     random.shuffle(self.cards) 
     return [self.cards.pop() for i in range(nCards)] 

if __name__ == '__main__': 
    for x in range(nPlayers): 
     person = CardPerson(deck) #you've made your CardPerson...now, get their guesses 
     #person.guess() will give you 25 guesses 
     #compare it to the cards variable above; if matches >= 17, then...(???) 

你更多信息:

Getting common elements between two lists不會使用set秒(這消除重複)。

+0

是的,我實際上需要找出500人中有多少人已經正確插入了17張卡或更多... – user1040563

+0

啊。一個重要的區別。 500人會猜測25個元素,並且需要超過68%的準確度才能通過。賠率似乎反對他們!祝你好運。 – Droogans

0

寫一個循環遍歷500名玩家。在循環的主體中,(1)生成2個隨機的25張牌(25張牌給予當前用戶,25張牌),(2)檢查每張牌猜對以計算好猜數(3)存儲當前玩家的結果。循環結束後,您將獲得一張充滿500名玩家猜測性能的列表。