1

私の仕事は、-2 から 5 の間の 5000 個の乱数を生成し、それらの値が 2 から 3 の間にある数を数えることです。

randNums=rand(1,5000); %Generate 5000 random values between 0 and 1

randNums=randNums*7-2; %Get those random values to be between -2 and 5

私はそれを理解し7*1=7ている0*7=0ので、それぞれから -2 = 7-2 ですが、数字が 5,6 または -6 と 1 の間である場合、それを再び適用する方法を完全に理解していません。

4

3 に答える 3

2

私の問題解釈

間隔(0,1)に乱数があります。ただし、(a,b) には乱数が必要です。

解決

間隔をスケーリングしてシフトするだけです。

間隔のスケーリング: 間隔 (a,b) のサイズ/長さは ba です。間隔を再スケーリングするには、すべてのランダム値に ba を掛ける必要があります。

間隔をシフトする: 間隔をスケーリングすると、間隔 (0,ba) に数値が含まれます。数値 a を追加することで、すべての数値をシフトするだけです。これにより、間隔(a、b)の乱数が発生します。

于 2013-03-14T14:19:54.620 に答える
1

あなたが言及しているのは「線形補間」と呼ばれます。一部のライブラリでは呼び出されlerp、通常は実装されています

float lerp(float v0, float v1, float t) {
    return v0+(v1-v0)*t
}

したがって、あなたの場合v0は -2 で、v17 でtあり、補間したい 0 と 1 の間の値です。

于 2013-03-14T14:29:43.213 に答える
0
numbers = random('unif', -2, 5, 1, 1000);
count = sum(numbers > 2 & numbers < 3);
于 2013-03-14T14:36:23.230 に答える