C++を使用して乱数を生成しようとしていますが、ランダムではないようです。私はもちろんそれらが擬似ランダムであることを認識していますが、私が見つけたのは実際にはそれを擬似ランダムとして切断していません。ここに私のコードは、私がこのCPPファイルをコンパイルし、実行しているから得られる結果は、常にいくつかの一見ランダムな数字が続く0.63を開始C++の乱数はランダムではありません
#include <iostream>
#include <time.h>
int main(){
srand (time(NULL));
std::cout << (double) rand()/(double) RAND_MAX;
return 0;
}
です。
紛失しているものがありますか? srandを使って乱数ジェネレータを正しく初期化していませんか?なぜ0と1の間の数字がランダムでないのですか?
おかげ
再現できませんでした:https://s13.postimg.org/oy2bv4izb/image.png –
不足していると思われる乱数のサンプルを追加できますか?また、どのプラットフォームを実行していますか? –
'rand()'は、0と1ではなく、0と 'RAND_MAX 'の間の数値を返します。' RAND_MAX'は "少なくとも32767"であると定義されています。たとえば、 'RAND_MAX'が2147483647であると仮定すると、' rand() 'は0.630と0.639の間の結果を出す計算のために、おおよそ1352914697と1372242050の間の値を返さなければなりません。それはかなり広い範囲の乱数です。一方、C++独自の[乱数ジェネレータ](http://en.cppreference.com/w/cpp/numeric)を使用する必要がある場合は、古い** C ** 'rand()'関数を使用しています。 /ランダム)。 –