2009-09-17 111 views
2

我已經使用rand()。但即使在重新啓動應用程序後,它也會提供特定的值。在iPhone中生成隨機值

我在我的應用程序中實現了以下內容。

- (void)viewDidLoad { 
[super viewDidLoad]; 
int x,y; 

x=random() % 480; y=random() % 300; 

lblT.center=CGPointMake(x,y); // my label lblT 
} 

嘗試在您的應用程序中執行並啓動應用程序。 重新啓動應用程序後,您會發現該標籤將處於特定值。

回答

13

arc4random()是一個內置函數,不需要種子(因此不會產生可以通過使用種子生成的可預測序列),並且它方便地返回整數。我從不使用其他任何東西。

8

使用前隨機()

以下行軟件

srand(time(NULL));

2

隨機數生成器將實際上給值的僞隨機序列。

除非用隨機數生成器爲真隨機事件生成一個值,否則每次使用軟件時都會得到相同的序列。

我不知道你的軟件,但它看起來不像你播種的隨機數發生器,Gcamp可能是在正確的軌道上。

1

由於使用隨機(),而不是蘭特()你應該籽這段代碼的隨機數生成器...

srandomdev();

1

我會做這樣的:

景觀:

- (void)viewDidLoad { 
[super viewDidLoad]; 


int x = arc4random()%480; 
int y = arc4random()%320; 

lblT.center=CGPointMake(x,y); 
} 

不landscap E:

- (void)viewDidLoad { 
    [super viewDidLoad]; 


    int x = arc4random()%320; 
    int y = arc4random()%480; 

    lblT.center=CGPointMake(x,y); 
    } 
+0

可以使用arc4random_uniform(值);而不是mod運算符 – Mikhail 2013-02-01 15:26:59

1

使用此代碼,只爲整數隨機值

#define random(min,max) ((arc4random() % (max-min+1)) + min) 

測試

for (int i = 0; i < 500; i++) { 
    NSLog(@"rand is %d", random(-100,100)); 
}