次のプログラムを受講してください。
#include <cstdlib>
using std::rand;
#include <iostream>
using std::cout;
int main()
{
cout << rand() << ' ' << rand() << ' ' << rand() << '\n';
}
rand
を使用してシードが変更されない限り、同じ値を生成するためsrand
、これは3つの同じ数値を生成するはずです。
例えば
567 567 567
ただし、このプログラムを実行すると、3つの異なる値が表示されます。
例えば
6334 18467 41
プログラムが(コンパイルされて)再度実行されると、同じ3つの数値が生成されます。srand
とは異なる結果を得る前に、シードを変更するために使用する必要はありませんrand
か?これは私のコンパイラ/実装が私に有利にしようとしているだけですか?
OS:Windows XP
コンパイラ:GCC 4.6.2
ライブラリ:MinGW
編集:を使用しようとするとsrand
、これが1のシードからの結果であることがわかりました(これはデフォルトになっていると思います)。