目前我正在研究一個iOS應用程序,我需要從一個carddeck中抽取隨機卡。目前我的代碼看起來是這樣的:從撲克牌中抽牌以獲得撲克的蒙特卡羅模擬
- (PlayingCard*) drawRandomCard
{
PlayingCard * randomCard = nil;
NSUInteger index = arc4random_uniform(self.cards.count);
randomCard = self.cards[index]; //self.cards is an NSArray of PlayingCard's
while (randomCard.isUsed) {
index = arc4random_uniform(self.cards.count);
randomCard = self.cards[index];
}
randomCard.used = YES;
return randomCard;
}
這個方法被調用了很多(50000 - 1'000'000次爲一蒙特卡羅仿真)!
目前整個事情都是慢下來的,我真的需要優化它。 我有一些想法:
- 更快的隨機數發生器
- 變化甲板(Objective-C類,包括PlayingCards的一個NSArray)和卡(Objective-C類),以一個全高級別表示在正常的C-數組和結構
- 變化的甲板和卡位單位水平的整體表現表示並盡一切那裏
你覺得呢?
你有任何其他想法?
你知道一個更適合(更快)的隨機數發生器嗎?
在此先感謝!
我改變了我的實現,並且它工作正常!謝謝!你有另一個想法來獲得更多的速度? –
現在它有多快?什麼部分花時間? –
那麼,如果你使用解決方案,也許你可以接受答案? –