随机猜测Python

时间:2011-11-17 22:06:12

标签: python

我有40张牌。 10黄色。 10红。 10蓝色和10绿色。我需要挑选25张随机卡,然后将它们分给500人。每个人都需要为25张牌中的每张牌猜出正确的颜色。

这是我到目前为止所做的:

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

根据shell,randomCards可以正常工作,但我无法找到一种方法将随机卡归因于每个玩家以及他们对4种颜色的猜测。 有什么建议吗?

3 个答案:

答案 0 :(得分:0)

如果我理解正确,每个玩家需要25个猜测(每张卡一个):

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

这将生成一个包含nPlayer嵌套列表的列表,每个列表都有nCards“猜测”。

randomGuesses[i][j]

是第i个玩家的第j个猜测。

答案 1 :(得分: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(消除重复)。

答案 2 :(得分:0)

写一个遍历500名玩家的循环。在循环体中,(1)生成2个随机列表,每个25张卡片(给当前用户的25张卡片,以及她的25个猜测),(2)检查每个卡片猜测对以计算好的猜测数量,(3)存储当前玩家的结果。循环结束后,您将获得一个列表,其中包含所有500名玩家的猜测性能。