not good but great

プログラミング、アート、映画・本の感想について書きます。

arc4random_uniform()を使ってランダムな色を取得する

f:id:naoyashiga:20140624205112p:plain
下の参考ページをそのまま参考にさせてもらうと、
http://blog.morizotter.com/2014/05/08/uicolor-random/

CGFloat r = (arc4random_uniform(255) + 1) / 255.0;
CGFloat g = (arc4random_uniform(255) + 1) / 255.0;
CGFloat b = (arc4random_uniform(255) + 1) / 255.0;
UIColor *color = [UIColor colorWithRed:r green:g blue:b alpha:1.0];

こうなります。

arc4random_uniform

arc4random_uniform()ってなに?と思ったので調べてみることにしました。

Objective-Cと戦うブログ: 乱数生成はarc4randomよりarc4random_uniformを使うといいらしい
IESE暮らし〜日本人MBA留学ブログ〜 Objective-Cの乱数作成はarc4random_uniform

rand()は初期化が必要、初期化はいらないがarc4random()は少しバイアスあり、arc4random_uniform()はバイアスをなくしたものだそうです。従って、arc4random_uniform()がこの場合ベストのようです。

//赤色っぽくする
UIColor *color = [UIColor colorWithRed:255 green:g blue:b alpha:1.0];

赤っぽい色でランダムで色を取得したいのなら、単純にred=255にするのが一つの手だと思います。g=255 or b=255で試してみると、それぞれ緑っぽい、青っぽい色になります。


oFのパーリンノイズや下のページに出ているようなノイズを使えばもっとおもしろい色の出力ができるかもしれません。
http://czgarrett.com/code/2011/05/18/perlin-noise-generator-for-ios.html