Profile
HN:gp-hss
職業:高校生
趣味:3DCG
言語:C全般
環境:VC++ 2008 EE
3DCG:Softimage Mod Tool
自己紹介:
ゲームプログラマー目指して勉強している者です。
現在 C++ 修得にむけて頑張っています。
Began study since 2009/8/21
ゲームプログラマー目指して勉強している者です。
現在 C++ 修得にむけて頑張っています。
Began study since 2009/8/21
Entry
(07/31)
(06/13)
(02/22)
(02/21)
(02/20)
Latest TB
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
えぇ~今回は(擬似)乱数を発生させる rand() 関数の説明をしようと思います。
この関数は精度が悪いらしいのですが、練習に使う分には十分です。
まずはこの関数を使うために stdlib.h をインクルードする必要があります。
#include <stdlib.h>
使い方は、まず rand() 関数内に組み込まれている 乱数の種 の値を設定してやらなければいけません。
それを実現するのが srand() 関数です。
srand() に何か適当な値を渡すことで 擬似乱数の発生系列 を設定できます。
例えば、何か適当な定数・・・・・・・まぁ 100 でも与えてみましょう。
そして rand() を呼び出した回数ごとに値を比較してみます。
僕の場合は、
1回目:365
2回目:1216
3回目:5415
4回目:16704
5回目:24504
となりました。
このプログラムを何度実行しても同じ結果になります。
なぜなら 乱数の種 の値が同じだからです。
乱数の発生系列が同じだから1回目、2回目に出る値もすべて同じになってしまいます。
それを改善するためのメジャーな方法が、現在時刻を取得してそれを与えるということです。
まずは、 time.h をインクルードする必要があります。
#include <time.h>
つぎに srand() に与える値に現在時刻を設定します。
srand(time(NULL));
こうすることによってプログラムを実行するたびに違う値を srand() に与えていますので、1回目、2回目に出る値も変わります。
#include <stdlib.h>
#include <time.h>
int main()
{
int i;
srand(time(NULL));
for(i = 0; i < 6; i++)
printf("%d回目:%d", i, rand());
return 0;
}
ようするに srand() を呼び出すのはプログラムの一番最初のみでよいのです。
何度も何度も種の値を変更する必要はありません。
わかってもらえたでしょうか?
ではまた今度。
PR