忍者ブログ
Profile
HN:gp-hss

職業:高校生

趣味:3DCG

言語:C全般

環境:VC++ 2008 EE

3DCG:Softimage Mod Tool

自己紹介:
ゲームプログラマー目指して勉強している者です。
現在 C++ 修得にむけて頑張っています。

Began study since 2009/8/21

Latest CM
[06/28 soulmorning]
Latest TB
(02/25)
17  16  15  14  13  12  11  10  9  8  7 
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

author : gp-hss ×

えぇ~今回は(擬似)乱数を発生させる 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() を呼び出すのはプログラムの一番最初のみでよいのです。
何度も何度も種の値を変更する必要はありません。
わかってもらえたでしょうか?

ではまた今度。

拍手[0回]

PR
author : gp-hss ×

COMMENT

ADD YOUR COMMENT

NAME
TITLE
MAIL
URL
COMMENT
PASS

TRACKBACK

TRACKBACK URL
忍者ブログ | [PR]
 | PAGE TOP
write | reply | admin