2010-02-17 55 views
8

單擊按鈕時如何生成一個隨機數字,並根據該數字生成不同的操作。iphone sdk中的隨機數?

我可能只需要從1-10的隨機數。

-(IBAction)buttonClicked{ 

"generate the random number" 

if(number == 1){ 

    something happens 
} 

else if(number == 2){ 
    somethine else happens 
} 

etc 

} 
+0

http://stackoverflow.com/questions/160890/generating-random-numbers-in-objective-c –

回答

14

還有,請,如果要生成從1隨機數到10 ......使用開關,而不是一堆如果{}否則,如果{}條款:

switch (arc4random() % 10){ 
case 0: 
    //blah blah 
    break; 
case 1: 
    //blah blah 
    break; 
//etc etc 
} 
+0

更好的是,使用合適的算法來0之間產生隨機數,並* n *從0到* n_max之間的隨機數的均勻分佈*:在java.util.Random#nextInt(int)中實現的一個非常深思熟慮:http://java.sun.com/javase/ 6 /文檔/ API/JAVA/util的/ Random.html#nextInt%28int%29 – Joey

4

與obj-c是C語言的超集,您可以自由使用rand功能

27

沒有與蘭特(),它大約有職位的負荷的一些問題,他們建議您使用arc4random()代替。該功能自動播種,並具有「更好」的數字生成算法。

int myNumber = arc4random() % 10 

這意味着myNumber將在0-9之間。

所以你的情況,你想:

int number = (arc4random() % 2) + 1; 

它會給你一個範圍1-2。

2

如果你需要加密的安全隨機數你可以使用:

int SecRandomCopyBytes (
    SecRandomRef rnd, 
    size_t count, 
    uint8_t *bytes 
); 

描述here

1

我有好成功與arc4random() - 只是模數來設置一個範圍。例如:

arc4random()%100;

我會積極避免使用rand(),因爲它不會產生真正的隨機數字,它需要播種。

0

NSArray *arr=[NSArray arrayWithObjects:@"1",@"2",@"3",@"4",@"5",@"6",@"7",@"8",@"9",@"10", nil]; NSMutableArray *valueArray=[[NSMutableArray alloc]init];

int count=0; 
while(count<5) 
{ 


    int rand= arc4random()%10; 
    NSLog(@"%d",rand); 


    NSString *str=[arr objectAtIndex:rand]; 
    if(![valueArray containsObject:str]) 
    { 
    [valueArray addObject:str]; 
    count++; 
    } 




} 


NSLog(@"%@",valueArray);