iOSアプリ開発の逆引き辞典

iPhone/iPadで使えるアプリ開発のTipsをまとめてみました

乱数(ランダムな値)を生成する

stdlib.hでは下記のように定義されています。

u_int32_t  arc4random(void);
void    arc4random_addrandom(unsigned char * /*dat*/, int /*datlen*/);
void    arc4random_buf(void * /*buf*/, size_t /*nbytes*/) __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_4_3);
void    arc4random_stir(void);
u_int32_t
     arc4random_uniform(u_int32_t /*upper_bound*/) __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_4_3);

特定の範囲の乱数を求める際には、arc4random関数を使うことができます。

//0から9までの値を取得する
u_int32_t random = arc4random() % 10;

上記のコードではarc4random関数で得た乱数の余剰を求めているため、arc4random関数では生成される乱数にやや偏りが発生してしまいます。

事前に0から9までの値が欲しいということが分かっているのであれば、arc4random_uniform関数を使うと良いでしょう。

//0から9までの値を取得する
u_int32_t random = arc4random_uniform(10);