JavaScript随机数介于15和225之间,增量为30?

Dan*_*Dan 5 javascript random math

嗨我需要在15到225之间的JavaScript中生成一个随机数,只能以30为增量.例如:45,75,105等.

关于如何做到这一点的任何想法?我知道Math.floor(Math.random()*11)例如1-10的随机数,但是如何修改它以适应我正在尝试做的事情?

Joe*_*Joe 6

像这样

Math.floor(Math.random()*8)*30 + 15
Run Code Online (Sandbox Code Playgroud)

  • 得到这个答案需要大多数学生从未期望使用的高中代数. (2认同)

Dan*_* D. 6

如何使用:

[15, 45, 75, 105, 135, 165, 195, 225][Math.floor(Math.random()*8)]
Run Code Online (Sandbox Code Playgroud)


zzz*_*Bov 5

从值表开始

x |   y
=======
0 |  15
1 |  45
2 |  75
3 | 105
4 | 135
5 | 165
6 | 195
7 | 225
Run Code Online (Sandbox Code Playgroud)

设定方程式

y = ax + b
Run Code Online (Sandbox Code Playgroud)

插入一些初始值

15 = a(0) + b
Run Code Online (Sandbox Code Playgroud)

解决任何变量

15 = b
Run Code Online (Sandbox Code Playgroud)

插入不同的初始值

225 = a(7) + 15
Run Code Online (Sandbox Code Playgroud)

解决任何剩余的变量

210 = a(7)
30 = a
Run Code Online (Sandbox Code Playgroud)

重述方程式

y = 30x + 15
Run Code Online (Sandbox Code Playgroud)

x在限制之间随机化

x = Math.floor(Math.random() * 8) //0-7
Run Code Online (Sandbox Code Playgroud)

在功能中使用

function customRandomNumber() {
    var x;
    x = Math.floor(Math.random() * 8);
    return 30 * x + 15;
}
Run Code Online (Sandbox Code Playgroud)

通过步骤在一个区间内获取随机数可以在以下函数中进行推广:

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;
}
Run Code Online (Sandbox Code Playgroud)

哪个会把你的功能作为

rand(15, 225, 30);
Run Code Online (Sandbox Code Playgroud)

我还应该注意,因为我忘记了可能的边界问题,通用形式将包括225的上限.这是因为Math.random()返回一个大于,或等于零且小于一(0 <= Math.random < 1)的数字.如果包含上限,则只需在区间中再包含一个步骤:

rand(15, 255, 30) //will return 15...225
Run Code Online (Sandbox Code Playgroud)


小智 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);
Run Code Online (Sandbox Code Playgroud)

  • 我真的不介意没有得到公认的答案,但这实际上是错误的。你永远不会得到225,仅供参考 (4认同)