web-dev-qa-db-ja.com

新しいビューへのiOS乱数ジェネレーター

アプリに関するサポートが必要です。 0から15までの整数用の乱数ジェネレーターを作成する必要があります。作成した数値に応じて、対応する数値のビューにプッシュします。これは私がそれが動作するようにする方法です

ボタンを押す->乱数ジェネレーターは0から15の間の数値を与える->ビューは、乱数ジェネレーターが与える数値を割り当てられた別のビューにプッシュします。

誰でもコードを手伝ってくれますか?ありがとう

27
Sam

arc4random()は、標準のObjective-C乱数ジェネレーター関数です。ゼロから...まあ、15以上の数字が表示されます!次のコードを使用して、0〜15の数値(0、1、2、... 15)を生成できます。

NSInteger randomNumber = arc4random() % 16;

次に、スイッチまたは一連のif/elseステートメントを実行して、別のView Controllerをプッシュできます。

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;

そして、MyViewControllerサブクラスにNSIntegerプロパティがあります。

97
Ash Furrow

arc4random_uniformを使用できます

NSUInteger r = arc4random_uniform(16);
19
Rémy Virin

Appleによると、最良の方法はarc4random_uniformを使用して上限を渡すことです。

arc4random_uniform(16)

ドキュメントから:

arc4random_uniform()は、upper_boundより小さい均一に分布した乱数を返します。 arc4random_uniform()は、「arc4random()%upper_bound」のような構造よりも推奨されます。 2つの。

https://developer.Apple.com/library/mac/documentation/Darwin/Reference/ManPages/man3/arc4random.3.html

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

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

    case 1:
    ...

}
9
Shubhank

Swift 4.2では、乱数を作成するために「arc4random_uniform」関数を呼び出す必要はありません。関数「ran​​dom(in:RANGE)」を呼び出すことができます。

//Create Random numbers Swift 4.2

//Int
let randomInt = Int.random(in: 1...10)

//Double
let radomDouble = Double.random(in: 1...10)

//Float
let randomFloat = Double.random(in: 1...10)
0
Blahji

これにはC関数Rand()を使用できます。

これにより、1〜30の整数が生成されます。代わりに、arc4randomこのような関数:

int i = arc4random() % 30;
NSLog(@"Random Number: %i", i);
0
user3917303
extension CGFloat {
   static func random() -> CGFloat {
       return CGFloat(arc4random()) / CGFloat(UInt32.max)
   }
}
0
Bhargav Sejpal