「乱数」の版間の差分
提供: C++入門
(相違点なし)
|
2013年12月29日 (日) 23:08時点における最新版
乱数 とは、ランダムに生成された数字です。C++では、cstdlibのsrandとrandを使用して生成します。randは、0からRAND_MAXの範囲の整数を返します。
読み方
- 乱数
- らんすう
- rand
- らんど
- srand
- えすらんど、すらんど
概要
RAND_MAXは、cstdlibに定義されている定数です。
乱数の典型的な使用方法として、ある範囲の値を求めることがよくあります。 たとえば、0から99の値の乱数がほしい、1から100までの乱数がほしい、2000から2014までの値がほしい、というようにです。 ある範囲の乱数を求めるときに、余りを求めるテクニックを利用します。ある値を100で割ると、その余りは、0 から 99 になります。
int v1 = rand % 100; // 1 - 99 の範囲 int v2 = rand % 100 + 1; // 1 - 100 の範囲 int v3 = rand % 15 + 2000; // 2000 - 2014 の範囲
randの戻り値と範囲
randは、0からRAND_MAXの範囲の整数を返します。
C++の乱数生成の例
ソースコード rand1.cpp
この例では、seed(種)の初期化に現在の時刻を利用しています。 実行するたびに、異なる値を生成できます。
#include <iostream> // cout #include <ctime> // time #include <cstdlib> // srand,rand using namespace std; int main(int argc, char const* argv[]) { std::srand( time(NULL) ); cout << "RAND_MAX = " << RAND_MAX << endl; for (int i = 0; i < 10; ++i) { cout << rand () << endl; } cout << endl; for (int i = 0; i < 10; ++i) { cout << rand () % 100 << endl; } return 0; }
コンパイル
g++ rand1.cpp -o rand1
実行例
% ./rand1 RAND_MAX = 2147483645 1183274118 1589546812 816717410 2001538699 1677084291 1032828768 642801881 1728486363 1659026778 335402004 6 5 84 58 96 9 93 0 42 7