クラスAのデータメンバ block[10][10] をすべて0で初期化したあとに
クラスAのコンストラクタ内で
A::A(){
int count=0;
for(int i=0;i<10;i++){
for(int j=0;j<10;j++){
if(count < 10){
block[j] = GetNowCount()%2;
if(block[j] != 0)
count++;
}
}
}
というふうに
block[10][10]の中の要素10個にランダムで1を入れたいのですが、
何度実行してもblock[0][0]から block[0][9]までに
0か1が入ってしまうんです。
コンパイルし直すたびに0か1のどちらかに偏ります。
どうしてでしょうか?
GetNowCount()について
Re:GetNowCount()について
あ、そういえばGetRandがありましたね。
すっかり忘れてました。
ですが、上記のプログラムの
block[j] = GetNowCount()%2は,
起動してからのミリ秒を2で割ったあまりを代入しているのだから、
0か1が入ると思うのですが、
実行するとblock[0][0]~block[0][9]が、全て0か1に統一されてしまい、
block[1][0]以降には行かないのですが、
どうしてですか?
すっかり忘れてました。
ですが、上記のプログラムの
block[j] = GetNowCount()%2は,
起動してからのミリ秒を2で割ったあまりを代入しているのだから、
0か1が入ると思うのですが、
実行するとblock[0][0]~block[0][9]が、全て0か1に統一されてしまい、
block[1][0]以降には行かないのですが、
どうしてですか?
Re:GetNowCount()について
そうですね、1ミリ秒よりも短い時間で処理が終了してしまえば、全て同じ数値になりますね。
仮に…
block[j] = GetNowCount()%2
この処理の前か後に
Sleep(1);
これを足してみてください。
これで変化があると思います。
仮に…
block[j] = GetNowCount()%2
この処理の前か後に
Sleep(1);
これを足してみてください。
これで変化があると思います。
Re:GetNowCount()について
指摘どおり、Sleep(1)をいれたらちゃんとばらけました。
いつもメインループ内で使っていたので、ループ処理の時間差を見落としてました。
ご指摘ありがとうございます。
いつもメインループ内で使っていたので、ループ処理の時間差を見落としてました。
ご指摘ありがとうございます。