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

2024-10-03 11:16:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在用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)

谢谢你的帮助


Tags: 项目内存代码import游戏tirandomcards
3条回答

你能在生成数字时把它们存储在两个列表中吗? 生成数字时: 检查列表:

-如果编号不在第一个列表中,则将其添加

-如果数字在第一个列表中,请检查第二个列表

-如果数字不在秒中,则将其相加

-如果number在第二个列表中,那么它已经生成了两次,并从那里执行您想要的操作,即假设是生成 另一个随机数。在

像这样的事情:

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 = ["___TI___", "___GK___", "___QW___", "___KJ___"]
boardTemp1 = cards * 2
random.shuffle(boardTemp1)
print(boardTemp1)

我会列出每一张牌两次,然后随机化列表而不是棋盘,然后将每张牌从列表中移除,同时将其放在棋盘上:

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

相关问题 更多 >