Python中的随机猜测

2024-07-05 10:13:02 发布

您现在位置: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)]

根据外壳,randomCards工作得很好,但是我找不到一种方法来将随机牌分配给每个玩家以及他们从4种颜色中猜出的牌。 有什么建议吗?在


Tags: inimportfor颜色rangerandom蓝色绿色
3条回答

写一个循环迭代500个玩家。在循环的主体部分,(1)生成两个随机列表,每组25张牌(给当前用户的25张牌,以及她的25次猜测),(2)检查每张牌的猜测对以计算正确猜测的数量,以及(3)存储当前玩家的结果。循环结束后,你会有一个列表,里面有所有500名玩家的猜测表现。在

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

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

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

^{pr2}$

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

创建一个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...(???)

更多信息:

不会使用sets的Getting common elements between two lists(它消除了重复项)。在

相关问题 更多 >