生成两个设定数字之间的随机值

时间:2013-03-14 14:08:36

标签: matlab random

我的任务是在-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=70*7=0所以-2 =每个= 7-2,但如果数字介于5,6或之间,我会完全理解如何再次应用它6和1。

3 个答案:

答案 0 :(得分:2)

我的问题解释

您在区间(0,1)中有随机数。但是你需要(a,b)中的随机数。

解决方案

您只需缩放和移动间隔。

缩放间隔: 间隔(a,b)的大小/长度是b-a。要重新缩放间隔,必须将所有随机值乘以b-a。

改变间隔: 缩放间隔时,间隔中有数字(0,b-a)。您只需通过添加数字a来移动所有数字。这导致区间(a,b)中的随机数。

答案 1 :(得分:1)

您所指的是" Linear Interpolation"。在某些库中,它被称为lerp,通常它已经实现

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

因此,在您的情况下,v0为-2,v1为7,t为您想要插值的0到1之间的值。

答案 2 :(得分:0)

numbers = random('unif', -2, 5, 1, 1000);
count = sum(numbers > 2 & numbers < 3);