ラベル 乱数 の投稿を表示しています。 すべての投稿を表示
ラベル 乱数 の投稿を表示しています。 すべての投稿を表示

2013年8月7日水曜日

乱数生成はarc4randomよりarc4random_uniformを使うといいらしい

乱数生成によく使う関数でarc4random()があります。この関数はrand()で行う初期化作業が必要ないので重宝されています。

しかし欠点もあり、以下がそうです。

実はarc4random()はランダム性に少しバイアスが掛かっています。arc4random()は0から2^32-1の値を返すため、それの法をとる際に微妙にランダム性が崩れるのです(modulo bias:0から10の値をとるランダム値のモジュロ7の法をとると、0-3の出現割合は4-6の二倍になりますね)。ただし、MAX_NUMが2の累乗であれば完全にランダムとなります。

Objective-Cの乱数作成はarc4random_uniform - だいたい47度

これを補ってくれるのが arc4random_uniform() です。