[英]How to write a function that returns matrix with random values from a given range in Python?
[英]Define function which gives random values in a given range in Python
我正在 python 中進行二十一點游戲,沒有graphics
或pygame
,但我需要它,所以如果他們使用hit
選項,它應該給他們一張完全其他價值的卡。 我看過在 python 中,是否有一個變量每次都是不同的隨機數? ,以及許多其他網站。 我沒有關於如何做到這一點的信息。 代碼:D
suits = ('Hearts', 'Diamonds', 'Spades', 'Clubs')
ranks = ('Two', 'Three', 'Four', 'Five', 'Six', 'Seven', 'Eight', 'Nine', 'Ten', 'Jack', 'Queen', 'King', 'Ace')
values = {'Two':2, 'Three':3, 'Four':4, 'Five':5, 'Six':6, 'Seven':7, 'Eight':8, 'Nine':9, 'Ten':10, 'Jack':10,'Queen':10, 'King':10, 'Ace':11}
###Printing Random
s = lambda: secure_choice.choice(suits)
r = lambda: secure_choice.choice(ranks)
ds = secure_choice.choice(suits)
dr = secure_choice.choice(ranks)
v = values.get(r)
dv = values.get(dr)
def pullCard():
print(f"You pulled a {r} of {s} the value is {v}")
print(f"The dealer pulled a {dr} of {ds} the value is {dv}")
def dealerOnly():
print('You standed')
pullCard()
Answer = str(input('Do you want to Hit or Stand?')).lower()
if Answer == 'stand':
dealerOnly()
elif Answer == 'hit':
pullCard()
我認為可行的方法:
def ReValueCard():
s = secure_choice.choice(suits)
r = secure_choice.choice(ranks)
我認為您正在尋找的答案是這樣做並更改需要匹配的變量。 為此使用內置的 python 導入random
數,並使用定義的命令random.randint
找到您的隨機卡
import random
oldcard = 7
# the old card would be updated with every last old card
while randomcard == oldcard:
randomcard = random.randint(2, 11)
else:
print(randomcard)
希望這會有所幫助!
如果您只需要它每次都是隨機卡,而不是不同的隨機卡,您可以這樣做:
import random
randomcard = random.randint(2, 11)
print(randomcard)
如果你也想要一套隨機套裝,只需對 1-4 應用random.randint
命令,然后將每個套裝定義為什么套裝
:D
使用諸如random.randint
/ random.choice
/ random.randrange
之類的東西生成單獨的隨機數存在避免重復的問題(畢竟你不想從一副牌中處理五個 A)。 最簡單的解決方案是實際制作一個包含所有值的牌組,將其洗牌,然后按順序處理,就像在現實世界中一樣。
要制作你的套牌,你只需要花色和等級的product
:
import itertools
import random
suits = ('Hearts', 'Diamonds', 'Spades', 'Clubs')
ranks = ('Two', 'Three', 'Four', 'Five', 'Six', 'Seven', 'Eight', 'Nine', 'Ten', 'Jack', 'Queen', 'King', 'Ace')
deck = list(itertools.product(suits, ranks))
然后你用相當明顯的名字random.shuffle
:
random.shuffle(deck) # Shuffles in place
現在,要從套牌中發牌,只需按需彈出卡片:
randomcard = deck.pop()
如果他們選擇再次擊中,只需再次調用deck.pop()
即可獲得一張隨機但不重復的卡片。 如果您想從多副牌中發牌以使算牌更加困難,只需在洗牌前將您的牌相乘:
deck = list(itertools.product(suits, ranks)) * 5 # Deal from five decks, not 1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.