0

ran1 から ran3 までの 3 つの変数があります。[ran1, ran2] 1-999 (integer) と [ran3] 0-1 (float) の間の値を受け取る必要があります。

私はこれを喜んでやっています:

* COMPUTE ran1 = TRUNC(UNIFORM(999)) + 1 .  * produces values between 1 and 999
* COMPUTE ran2 = TRUNC(UNIFORM(999)) + 1 .  * produces values between 1 and 999
* COMPUTE ran3 = UNIFORM(1) .               * produces values between 0.01 and 0.99

しかし、正規分布の方が以下に役立つとアドバイスされています。

だから、私はこれをしました:

COMPUTE ran1 = TRUNC(NORMAL(999)) + 1 .     * produces values between -4900 and +4744
COMPUTE ran2 = TRUNC(NORMAL(999)) + 1 .     * produces values between -4748 and +4902 
COMPUTE ran3 = NORMAL(2) .                  * produces values between -11.10 and +10.72

値がゼロ付近に集まっているのはなぜですか? それらを必要な範囲内に収めるにはどうすればよいですか?

ありがとう。

4

1 に答える 1

2

通常の RNG の古い形式を使用しています。その関数では、パラメーターは平均ではなくシグマです。

RV.NORMAL(平均、標準偏差)を使用します。

RV.xxx 表記は、RV.UNIFORM(min, max) を含むすべての乱数ジェネレーターに使用できます。

于 2013-08-22T19:34:15.497 に答える