この関数の目的
rand()は、偽乱数を発生させる。
定義
#include <stdlib.h> int rand(void);
働き
この関数は 0 から RAND_MAX
の間の連続擬似乱数を発生させる。
処理系はライブラリ関数が一度も rand() を呼ばないかのように動作する。
返り値は、整数の擬似乱数である。
処理系限界
RAND_MAX
マクロの値は 32767 以上でなければならない。
解説
呼ぶたびに違う乱数が返ってくるが、乱数のシードを設定しないと、実行毎に同じ乱数列が返ってくる。 実行するたびに違う結果が欲しいなら、システム時間などで初期化するのがよい。 srand() 、 time() を参照のこと。
なお、コンピュータ上でシミュレートしている擬似乱数である限り、完全な乱数を得ることは期待できない。 処理系によっては、何度も呼んでいると周期性が現れてくる場合がある。
整数で 0 から n までの範囲で乱数を得る常套句( n が RAND_MAX
に近づくと誤差が出る:
統計サンプル 日本語版(Shift-JIS, EUC-JP,
UTF-8, JIS)・英語版)
(rand() % (n+1))
浮動小数点数で 0 から 1 までの範囲で乱数を得る常套句(マクロにしておくと使いやすい)
((double)rand() / RAND_MAX)