Python 如何限制特定随机数的生成次数

Python 如何限制特定随机数的生成次数,python,Python,我目前正在用python编写一个内存游戏,作为一个类项目。我试图生成0到3之间的随机数,这将对应于某张卡。问题是,我需要每张卡片只出现两次。不多也不少 这是我目前的代码: import random cards = ["___TI___", "___GK___", "___QW___", "___KJ___"] boardTemp1 = ['1', '2', '3', '4', '5', '6', '7', '8

我目前正在用python编写一个内存游戏,作为一个类项目。我试图生成0到3之间的随机数,这将对应于某张卡。问题是,我需要每张卡片只出现两次。不多也不少

这是我目前的代码:

import random
cards = ["___TI___", "___GK___", "___QW___", "___KJ___"]
boardTemp1 = ['1', '2',
              '3', '4',
              '5', '6',
              '7', '8']

def shuffle():

    cardChoose = random.randint(0, 3)
    boardChoose = random.randint(0, 7)
    randCard = 9
    randCard = cards[cardChoose]
    boardTemp1[boardChoose] = cards[cardChoose]
    return randCard

boardTemp1[0] = shuffle()
boardTemp1[1] = shuffle()
boardTemp1[2] = shuffle()
boardTemp1[3] = shuffle()
boardTemp1[4] = shuffle()
boardTemp1[5] = shuffle()
boardTemp1[6] = shuffle()
boardTemp1[7] = shuffle()


print(boardTemp1)

感谢您提供的帮助

当您有一组特定的项目时,做出独立的随机选择并不是一个好方法。请尝试以下方法:

import random
cards = ["___TI___", "___GK___", "___QW___", "___KJ___"]
boardTemp1 = cards * 2
random.shuffle(boardTemp1)
print(boardTemp1)

生成数字时,能否将其存储在两个列表中? 生成数字时: 检查列表:

-如果编号不在第一个列表中,请添加它

-如果编号在第一个列表中,请选中第二个

-如果第二个数字不在,则添加它

-若数字在第二个列表中,那个么它已经被生成了两次,然后从那个里做你们想做的事情,这就是假设生成 另一个随机数

例如这样的事情:

list1=[]
list2=[]
n=newly generated random number
if n not in list1:
    list1.append(n)
elif
  if n not in list2:
    list2.append(n)
else:
  #regenerate random number

我会将每张卡片列出两次,并将列表而不是棋盘随机排列,然后在您将每张卡片放在棋盘上时将其从列表中删除:

import random

cards = [1, 1, 2, 2, 3, 3, 4, 4]
random.shuffle(cards)

while cards:
    card = cards.pop()
    # place each card on the board sequentially

值得注意的是,在人类看来,完全随机性就像是算法在对抗他们。如果你想寻找更“公平”的随机洗牌,请看一看。@Olian04一般来说可能是个好建议,但在这种情况下,这是一个记忆游戏。只要纸牌在游戏中不移动,我不认为“堆叠对他们”可能是一件事。是的,一般的Fisher-Yates随机性绝对足够好。你可以保留一个比2个列表简单得多的列表。我不知道计数器,但是列表方法有效吗?我非常感谢您的反馈,因为我刚刚开始学习python/编码。好的,非常感谢。