乱数

提供: C++入門
移動: 案内検索
スポンサーリンク

乱数 とは、ランダムに生成された数字です。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

関連項目




スポンサーリンク