我创建了一个类,有效地从52张牌组中随机处理一张扑克牌。然后我写了几行代码来模拟52次绘制的100K模拟,因为我想知道是否正确实现了分布。当我这么做的时候,我意识到运行sim卡需要87秒。对我来说那似乎是很长的一段时间。有人能指出第二章中的一些可能会让它变得如此缓慢的东西吗?你知道吗
import time
import random as rand
import numpy as np
class PlayingCard:
ranks = ['2','3','4','5','6','7','8','9','10','J','Q','K','A']
suits = ['Spades', 'Hearts', 'Clubs', 'Diamonds']
def __init__(self, rank = None, suit = None):
if rank is None: self.rank = PlayingCard.ranks[rand.randint(0,12)]
elif rank in PlayingCard.ranks: self.rank = rank
else: raise NameError('Invalid rank')
if suit is None: self.suit = PlayingCard.suits[rand.randint(0,3)]
elif suit in PlayingCard.suits: self.suit = suit
else: raise NameError('Invalid suit')
def identity(self):
return (self.rank,self.suit)
#2
start = time.clock()
deck = zip(PlayingCard.ranks*4,PlayingCard.suits*13)
mat = [[PlayingCard().identity() for x in range(52)] for y in range(100000)]
res = [[(y.count(x)/52.0) for x in deck] for y in mat]
mean = [np.mean([res[y][x] for y in range(len(res))]) for x in range(52)]
end = time.clock() - start
print end
你为什么不数一数抽签的次数呢?速度更快:
对我来说,这大约需要
0.6
秒:相关问题 更多 >
编程相关推荐