Dan*_*Dan 5 javascript random math
嗨我需要在15到225之间的JavaScript中生成一个随机数,只能以30为增量.例如:45,75,105等.
关于如何做到这一点的任何想法?我知道Math.floor(Math.random()*11)例如1-10的随机数,但是如何修改它以适应我正在尝试做的事情?
像这样
Math.floor(Math.random()*8)*30 + 15
如何使用:
[15, 45, 75, 105, 135, 165, 195, 225][Math.floor(Math.random()*8)]
从值表开始
x |   y
=======
0 |  15
1 |  45
2 |  75
3 | 105
4 | 135
5 | 165
6 | 195
7 | 225
设定方程式
y = ax + b
插入一些初始值
15 = a(0) + b
解决任何变量
15 = b
插入不同的初始值
225 = a(7) + 15
解决任何剩余的变量
210 = a(7)
30 = a
重述方程式
y = 30x + 15
x在限制之间随机化
x = Math.floor(Math.random() * 8) //0-7
在功能中使用
function customRandomNumber() {
    var x;
    x = Math.floor(Math.random() * 8);
    return 30 * x + 15;
}
通过步骤在一个区间内获取随机数可以在以下函数中进行推广:
function rand(min, max, step) {
    var delta,
        range,
        rand;
    if (arguments.length < 2) {
        max = min;
        min = 0;
    }
    if (!step) {
        step = 1;
    }
    delta = max - min;
    range = delta / step;
    rand = Math.random();
    rand *= range;
    rand = Math.floor(rand);
    rand *= step;
    rand += min;
    return rand;
}
哪个会把你的功能作为
rand(15, 225, 30);
我还应该注意,因为我忘记了可能的边界问题,通用形式将不包括225的上限.这是因为Math.random()返回一个大于,或等于零且小于一(0 <= Math.random < 1)的数字.如果要包含上限,则只需在区间中再包含一个步骤:
rand(15, 255, 30) //will return 15...225
小智 4
您需要考虑您想要的最终结果。15 到 225 之间是您想要的目标,但不是您需要使用才能获得结果的值。
225/30 = 7.5。15 是 30 的一半。因此,(225-15)/30 = 7。您需要一个 1 到 7 之间的随机数,然后将其乘以 30 并加上 15 得到最终结果。
var myNumber = Math.floor(Math.random()*7);
myNumber = myNumber *30 + 15;
console.log(myNumber);