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