C言語 rand関数で乱数を取得






スポンサードリンク

【 rand 】を使うことにより【 0〜RAND_MAX 】までの間で乱数を発生させることが出来ます。【 RAND_MAX 】は数学関数の一般ライブラリ<stdlib.h>にて【 #define RAND_MAX 0x7fff 】と定義されており、これを十進数で表現すると【 32767 】になり、0〜32767までの乱数を発生させることになります。

簡単な乱数取得サンプルから
※【 #include <stdlib.h> 】は【 rand 】関数を使用するのに必要です。

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
  double i;
  i=rand();
printf("乱数%f\n",i);

return 0;
}

解説
【 rand(); 】と記述すれば、乱数を発生させる事が出来ます。実数型変数名【 i 】に乱数を代入し、出力させております。

上記の実行結果


上記のプログラムをループさせて幾つかの乱数を取得させる方法です。

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
   int a;
   double i;

   for(a=0;a<=6;a++){
   i=rand();
   printf("乱数%f\n",i);

}
return 0;

}

以下は六回ループさせて乱数を取得し出力させるようになっておりますが、
何度も実行するとわかるように、毎回同じ乱数が出力されていまいます。
単純に【 rand() 】とすると毎回同じ乱数が発生する事を「同じ乱数系列」と言い
異なる乱数を得たい場合は【 srand() 】関数で乱数系列を再設定します。(※この下の説明を参照して下さい。)

上記の実行結果

上記の場合わざわざマクロを使うほどの物ではないのですが、以下の様に記述すれば
プログラムの内容がわかりやすくなるとの事です。
#include <stdio.h>
#define max 100
int main(void)
{
   int i;
   for(i=0; i<=max; i=i+10){
   printf("%d\n",i);
   }
return 0;
}
上記の複数回実行結果
同じ乱数が得られております。


【 srand() 】を記述して、指定した整数から新しい乱数を発生させることが出来ます。

サンプル

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
   int a;
   double i;

   srand(5);
   for(a=0;a<=6;a++){
   i=rand();
   printf("乱数%f\n",i);
   }
return 0;

}

解説
【 srand() 】をループに入る前に設定し【 rand() 】のみ記述の際と異なる乱数を発生させることが出来ます。
しかしながらそれでもランダムに発生させることは出来ません。
※【 srand(5) 】中に設定する整数は任意のものでOKです。

上記の複数回実行結果です。
【 rand() 】の場合と異なる乱数が発生しておりますが、発生する乱数はやはり同じ値になります。


次回はランダムに乱数を取得する方法、時間関数【 time() 】を【 srand() 】に設定しランダムに乱数を発生させる説明を参照すると良いでしょう。

あかかげまるのC言語入門はこちら!!

スポンサードリンク

パソコン勉強部屋 | パソコン勉強部屋2 | ADSL勉強部屋 | メール勉強部屋 | LAN勉強部屋 | ホームページ勉強部屋 | 自宅サーバー勉強部屋 | お役立ちソフトの部屋 | C言語勉強 | 無料ゲーム | 無料セキュリティー | Linuxのコーナー | あかかげまる | オンライン通販 | ショップブランドパソコン | DVDとCD編集ツール

 Subscribe in a reader


ページトップへ