2010-09-24 85 views
0

我想創建一個隨機數,但每次點擊按鈕時都會產生一個新的隨機數。我應該在哪裏放置隨機數聲明,以便它只創建一個隨機數?Objective-C中的隨機數字幫助?

+0

你使用的號碼是什麼?你爲什麼不想要生成新的數字?如果用戶退出應用並重新啓動,那麼您是否需要一個不同的隨機數?這些問題的答案可能會提示不同的UI設計。 – outis 2010-09-25 00:12:56

+0

您正在開發OS X應用程序或iOS應用程序嗎? – outis 2010-09-25 00:20:31

回答

1

嘗試用常數播種隨機數發生器。也許嘗試:

srand(1); 

當然,出於測試目的,您可能需要使用一個變量,所以你可以改變它,並有不同的「相同的隨機數」。

另一種方式是使用一個標誌(名字類似於randomNumIsGenerated)來確定數字是否已經生成。您生成的第一次,它設置爲true,然後你的代碼來生成看起來是這樣的:

if (!randomNumIsGenerated) 
{ 
    /*generate random number*/ 
    randomNumIsGenerated=true; 
} 

randomNumIsGenerated必須是靜態的,否則,任何的類包含它有它自己的隨機每個實例只能設置一次的數字。使其爲靜態將確保所有實例使用相同的隨機數。或者最後,你可以設置一次隨機數,當程序啓動時,可能在你的啓動函數(Main,或者任何你稱之爲的)中。

0

你可以做這樣的事情:

- (IBAction)buttonPressed:(id)sender { 
    static int randomNumber = -1; 
    if (randomNumber == -1) { 
     randomNumber = arc4random() % (/* maxNumberYouWantGenerated */) + 1; 
    } 

    ... // do stuff with the random number. 
} 

arc4random()功能可能是目前最好的隨機數發生器(rand()random()具有不產生所有的隨機數的傾向),並且沒有調用它參數會使它自己發芽,所以你對這個帳戶很好。

static關鍵字意味着randomNumber將在初次調用該方法時初始化爲-1,但在此後每次都會保持相同的值(即一旦它生成,隨機數將保持不變) 。然後你可以使用randomNumber知道它每次都是相同的隨機數。

您只需決定要生成的最大數量,然後將其放入方法中即可。

0

您可以使用-(void)setEnabled:(BOOL)(NSButton從NSControl繼承)來簡單地禁用該按鈕(無論哪個按鈕恰好是),而不是確保只生成一個數字。在iOS下,服務於相同目的的UIControl has an "enabled" property。由於問題描述非常稀疏,所以不確定哪種方法最好。再給我們一些details,這樣我們可以提供更好的幫助。