52 枚のカード デッキからランダムにトランプ カードを効果的に配るクラスを作成しました。次に、ディストリビューションが正しく実装されているかどうか疑問に思っていたので、52 回の描画の 100K シミュレーションをシミュレートするために数行を書きました。すると、sim の実行に 87 秒かかっていることに気付きました。それは私には長い時間のように思えます。#2で非常に遅くなっている可能性があることを誰か指摘できますか?
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