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=70*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,v1是 7,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 回答