2012-03-05 36 views
25

我需要一些幫助的應用程序。我需要爲0到15之間的整數生成一個隨機數字生成器,然後根據創建的數字推送到具有相應編號的視圖。 這就是我想要它工作的方式iOS的隨機數產生一個新的觀點

按一個按鈕 - >隨機數發生器給出一個介於0到15之間的數字 - >查看推到另一個已分配隨機數發生器給出的數字的視圖。

任何人可以幫助我的代碼? 由於

+2

其代碼你在說什麼? – 2012-03-05 20:26:26

+1

這裏是關於隨機數生成的鏈接:http://stackoverflow.com/questions/160890/generating-random-numbers-in-objective-c – Jeremy 2012-03-05 20:27:43

回答

93

arc4random()是標準Objective-C的隨機數生成函數。它會給你一個介於零和......之間的數字,超過十五個!

NSInteger randomNumber = arc4random() % 16; 

然後,你可以做一個開關或一系列if/else語句:您可以用下面的代碼生成0到15之間的數字(所以,0,1,2,... 15)按不同的視圖控制器:

UIViewController *viewController = nil; 
switch (randomNumber) 
{ 
    case 0: 
     viewController = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil]; 
    break; 
    // etc ... 
} 

[self.navigationController pushViewController:viewController animated:YES]; 

或者更確切地說,在重讀的問題,它看起來像下面這樣:

UIViewController *viewController = [[MyViewController alloc] initWithNibName:@"MyViewController" 
viewController.number = randomNumber; 

而且你有一個NSInteger p roperty在MyViewController子類上。

+6

函數arc4random_uniform()是首選,因爲它不受模偏差的影響。 – 2013-05-06 18:26:49

+0

這個函數生成僞隨機數嗎?它使用什麼種子? – 2014-06-08 00:25:42

+0

@CharlesChow引用手冊頁,''arc4random()函數使用arc4密碼使用的密鑰流生成器,它使用8 * 8的8位S-盒,S盒可以大約爲(2 ** 1700)的狀態。該arc4random()函數在0至 (2 ** 32)-1的範圍返回僞隨機數,並因此具有蘭特(3)和隨機(3)。「' – jk7 2017-01-05 18:50:22

8
int randomIndex = arc4random() % 14 + 1 ; // gives no .between 1 to 15 .. 

    switch (randomIndex) 
{ 
    case 0 : 
    push view 1 ; 
    break; 

    case 1: 
    ... 

} 
+4

或'arc4random()%16'來匹配正確的範圍內,也' arc4random()%14 + 1'給出'[1,14]'。 – 2012-03-05 20:28:02

+0

爲什麼-1?其他則是%14 + 1;我看不出有什麼問題。 – 2012-03-05 21:16:07

18

您可以使用arc4random_uniform

NSUInteger r = arc4random_uniform(16); 
+0

在64位模式下,arc4random_uniform返回一個32位int,NSUInteger是一個64位int,對吧? – avance 2014-04-11 19:41:04

+0

u_int32_t \t arc4random_uniform(u_int32_t/* UPPER_BOUND * /)__OSX_AVAILABLE_STARTING(__ MAC_10_7,__IPHONE_4_3); 看起來它總是32位的無符號整數。 – 2014-04-12 06:52:52

0

我們可以使用C函數rand()此:

這會產生1到30之間的整數或者您可以使用arc4random功能是這樣的:

int i = arc4random() % 30; 
NSLog(@"Random Number: %i", i);