ランダムでばらばらな数字をだしてみる | ゆぅさんのiPhone開発技術関連ブログ

ゆぅさんのiPhone開発技術関連ブログ

iPhone開発についての技術まわりのことを切り出して書き込みします。

ちょっとUIから離れてランダムについてのまとめ手裏剣

ランダム処理はゲームには欠かせないですね。
なので、ランダムの出し方をめもめもします。

ランダムを生成するには、

rand()

を使います。
結果は0~2147483647(2の31乗-1)の間ランダム値が出てきます。

ランダムで数を10個ログするサンプル

for(int i = 0; i < 10; i++){
NSLog(@"%d", rand());
}



結果

2012-03-18 02:30:50.020 Sample120222[23651:207] 16807
2012-03-18 02:30:50.021 Sample120222[23651:207] 282475249
2012-03-18 02:30:50.022 Sample120222[23651:207] 1622650073
2012-03-18 02:30:50.022 Sample120222[23651:207] 984943658
2012-03-18 02:30:50.023 Sample120222[23651:207] 1144108930
2012-03-18 02:30:50.023 Sample120222[23651:207] 470211272
2012-03-18 02:30:50.024 Sample120222[23651:207] 101027544
2012-03-18 02:30:50.025 Sample120222[23651:207] 1457850878
2012-03-18 02:30:50.025 Sample120222[23651:207] 1458777923
2012-03-18 02:30:50.025 Sample120222[23651:207] 2007237709



やったー!ばらばらな数がでた~!ワイン
なのですが、これ、何回やってもこの数が出てしまう。
おカタイコンピュータパソコンさんは、バラバラって苦手・・・?
ひと工夫してあげないと、このままでは使えない。

そこで、ランダムを初期化する関数の登場!

srand(適当な数)

で適当な数を入れてあげるとその数に応じたランダムの数がでてくる。
同じ数をいれるとやっぱり同じ数の並びになってしまうので、ここにいれる数を
毎回変わるようにしてあげないといけない。

現在時刻だったら動かすたびに同じ値にならないので、
こんな感じに書き換えたら、さっきのやつが毎回ばらばらになる。


srand([NSDate timeIntervalSinceReferenceDate]);
for(int i = 0; i < 10; i++){
NSLog(@"%d", rand());
}



出てきた数を2147483647で割って0~1のランダムにするとか、
10とかで割ったあまりを出して0~9の間のランダム整数を出すとかで
必要な形にして使っていけばOK!アップ

ランダムについては、Objective-Cというより、C言語の基本関数ですね。