29 lines
738 B
Python
29 lines
738 B
Python
from sys import argv
|
|
|
|
def randomGenerator(seed=1):
|
|
max_int32 = (1 << 31) - 1
|
|
seed = seed & max_int32
|
|
|
|
while True:
|
|
seed = (seed * 214013 + 2531011) & max_int32
|
|
yield seed >> 16
|
|
|
|
def deal(seed):
|
|
nc = 52
|
|
cards = range(nc - 1, -1, -1)
|
|
rnd = randomGenerator(seed)
|
|
for i, r in zip(range(nc), rnd):
|
|
j = (nc - 1) - r % (nc - i)
|
|
cards[i], cards[j] = cards[j], cards[i]
|
|
return cards
|
|
|
|
def show(cards):
|
|
l = ["A23456789TJQK"[c / 4] + "CDHS"[c % 4] for c in cards]
|
|
for i in range(0, len(cards), 8):
|
|
print " ", " ".join(l[i : i+8])
|
|
|
|
if __name__ == '__main__':
|
|
seed = int(argv[1]) if len(argv) == 2 else 11982
|
|
print "Hand", seed
|
|
deck = deal(seed)
|
|
show(deck)
|