-1

このコードを使用して、0 と 1 の間の乱数を作成します。

randnumber = (double)((double)rand() / (double)RAND_MAX);

このコード行は、定期的に 0.650434、0.302340、0.906789 などの数字を返します。これは私にとって大きな数字です。問題は、0.000200、0.000100、0.000400、0.000600 などの数値のような小さい範囲の数値が必要なことです。このコード行を変更して結果を得るにはどうすればよいですか?

4

2 に答える 2

3

探している確率分布関数の種類を知っていますか? それでも均一にしたい場合は、 [0,1) の結果を大きな数で割り、シフトを適用して、必要な値を中心にすることができます。

正規分布したものが必要な場合は、逆変換メソッドなどを使用できます。ここでも、中央に配置して標準偏差を変更する必要があります。他のディストリビューションにも同様の変換があります

于 2013-07-17T13:59:57.947 に答える
1

これにより、1から100までの乱数が得られます

int randInt= (rand()%100)+1;

それを分割して、目的の範囲を取得します

double yourRange=(double)randInt/100000;
于 2013-07-17T14:00:54.457 に答える