【问题标题】:Prevent random numbers from repeating防止随机数重复
【发布时间】:2014-01-26 05:50:32
【问题描述】:

我是一个在 Xcode 上开发纸牌游戏应用程序的相对较新的程序员,到目前为止,我会生成一个随机数来确定首先发给哪张纸牌。我很好奇如何防止同一个号码多次出现。假设生成器选择了 52,并且发了黑桃 A,当它发给下一个玩家时,生成器仍然有可能选择 52,这不起作用,因为黑桃 A 已经离开了牌组。

这是我的代码示例........

(随机数从 27 到 52,因为我目前只有黑桃和红心)

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {

//Dealing Random Cards ------------------------------------------------------------------------------------------------------

self.FirstCard = arc4random() % 26+27;
NSLog(@"Random Number: %i", self.FirstCard);

//Deal First Card --------------------------------------------------------------------
if (self.FirstCard == 52) {
    SKAction *DealFirstCard = [SKAction moveToY:40 duration:0.25];
    SKAction *DealFirstCard2 = [SKAction moveToX:130 duration:0.25];
    SKAction *DealSequence = [SKAction sequence:@[DealFirstCard,DealFirstCard2]];
    [self.ASpade runAction:DealSequence];
}
if (self.FirstCard == 51) {
    SKAction *DealFirstCard = [SKAction moveToY:40 duration:0.25];
    SKAction *DealFirstCard2 = [SKAction moveToX:130 duration:0.25];
    SKAction *DealSequence = [SKAction sequence:@[DealFirstCard,DealFirstCard2]];
    [self.TwoSpade runAction:DealSequence];
}
if (self.FirstCard == 50) {
    SKAction *DealFirstCard = [SKAction moveToY:40 duration:0.25];
    SKAction *DealFirstCard2 = [SKAction moveToX:130 duration:0.25];
    SKAction *DealSequence = [SKAction sequence:@[DealFirstCard,DealFirstCard2]];
    [self.ThreeSpade runAction:DealSequence];
}

【问题讨论】:

标签: objective-c random numbers duplicates repeat


【解决方案1】:

您需要在列表中保留以前的数字列表。每次生成号码时,您都需要确保该号码不在您的列表中。

【讨论】:

  • 是的,就这么简单。
  • 我意识到我应该使用 NSMutableArray 来做到这一点,但我正在努力解决如何做到这一点。任何帮助表示赞赏。
【解决方案2】:

你应该 shuffle 甲板,然后遍历它。

【讨论】:

    猜你喜欢
    • 2017-05-20
    • 1970-01-01
    • 1970-01-01
    • 2017-12-25
    • 2011-07-02
    • 2014-01-01
    • 1970-01-01
    • 2018-08-12
    • 1970-01-01
    相关资源
    最近更新 更多