0からnまでの乱数を取得するためには srand() 関数と rand() 関数を使います。
乱数を生成するためには、まず、乱数の種と呼ばれるランダムな数値を選出する際の基となるデータを初期化します。これはコンピュータが乱数の生成を不得手としていて、なにか参考になる値でも受け取らないと乱数のらの字も作れないためです。
srand((unsigned int)time(NULL));
srand() 関数は符号なし整数値を指定するのですが、例のように time() 関数の戻り値をキャストするのが大人気です。練習ならこれで問題ないのですが、人に見せるプログラムを作る際には /dev/random のような乱数生成デバイスの値を取得するのが良いと思います。
srand() 関数の実行が終わったら rand() 関数の出番です。 rand() 関数は0から RAND_MAX 定数が定める数値までの乱数を返します。たとえば0から10までの乱数を受け取りたい場合は次のように書きます。
int random_number = rand() % 11;
0から10までの乱数を受け取りたいのになぜ 11 を指定するのかというと、0から10までの整数を並べると 11 個になるためです。要素が 10 個ある配列の添え字の最大値が9なのと同じことです。
しかしながら、ゲームを作る場合はメルセンヌツイスタの利用を検討いただくのが最適です。聞くところによると Boost にメルセンヌツイスタの関数があるらしいので今度試してみます。
Comments
Pythonで0からnまでの乱数を生成する
僕が毎日チェックしているブログ「いちばんやさしいゲームの作り方」で公開されているプログラミングTipsをPythonで実現してみる企画の第一段。
…
Contributions