std::random_deviceが生成する数値列が毎回同じなのはOK?
MinGW版GCCでは、std::random_device
のデフォルトコンストラクターを使うと毎回同じ数値列が生成されますが、これは規格に準拠した動作なのでしょうか?
実装の制限によって擬似乱数生成器を使うことは許されているようですが、std::random_device
を使うということは予測不可能な乱数列を期待しているはずなので、種を固定して毎回同じ数値列が生成される(=簡単に予測可能)のは、さすがにまずいと思うのですが。
参考:
#include <random>
#include <iostream>
int main()
{
std::random_device rnd_gen;
std::cout << rnd_gen() << "\n";
}
D:\home\tmp\random>g++ --version
g++ (tdm64-1) 5.1.0
…
D:\home\tmp\random>g++ -Wall -std=c++11 test_random_device.cpp
D:\home\tmp\random>a.exe
3499211612
D:\home\tmp\random>a.exe
3499211612
D:\home\tmp\random>a.exe
3499211612