-1
私はcstdlibとg ++のrandとsrandをコンパイラとして使用しています。私はいくつかの擬似乱数を生成しようとしていましたが、予期しない偏った結果が出ていました。私は好奇心が強いので、私は単純な関数を書いた。予想される動作は、1と10の間の乱数が生成され、100xをスクリーンに出力することです。平均の期待値は5でなければなりません。しかし、この関数を実行すると、1と10の間の単一の乱数が生成され、生成された乱数と等しい平均値で100xが出力されます。C++とrand/srandの動作が期待通りに実行されない
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
float bs(){
float random;
srand(time(0));
random = rand() % 10 + 1;
return random;
}
int main(){
float average;
float random;
for (int i = 1; i < 101; ++i)
{
random += bs();
cout << random << endl;
}
average = random/100;
cout << average << endl;
return 0;
}
bs = 7からの最初の復帰の場合、ループの持続時間の間、およびbs()が呼び出されるたびに7に留まります。出力は、それ自身が100xに加算され、平均値はとなります。 7.ここでは何が起こっていますか?
うん、それはそれを解決しました。ありがとう! – beastface5000