2011-11-17 77 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名玩家猜测性能的列表。