C/C++の宿題片付けます 143代目
■ このスレッドは過去ログ倉庫に格納されています
0495デフォルトの名無しさん
2010/11/27(土) 23:02:00ttp://codepad.org/gUK5WYAK
上記は line 104 の printf() のコメントを外して n を 10 にした結果だ
codepad では Random() の結果が全て -700 前後になるんだが、codepad では gcc を使用しているはずなので
君の環境での結果と同じはず
で、禁を犯して codepad 上で少しデバッグしたら以下が判った
RAND_MAX は bcc では 0xFFFF/2 - 1 だが gcc では 0xFFFFFFFF/2 - 1 だ
>>462 line8 において
return (double)rand() / (RAND_MAX + 1);
とあり、この時の分母は一旦 singned int に代入されるため
bcc では 0xFFFF/2
gcc では 0xFFFFFFFF/2
となり、bcc では正の値、gccでは負の値となってしまう、よって
return (double)rand() / RAND_MAX;
とするのが正しい
言い訳になるけどこの部分の実装は俺では無いので見落としていた
■ このスレッドは過去ログ倉庫に格納されています