如何生成给定范围内给定数字的随机倍数?

时间:2021-04-18 02:29:04

标签: javascript random

如何生成一个随机数,它是给定数的倍数,同时确保该数也在指定范围内?如果没有这样的倍数,它应该返回 NaN

const generateMultiple = (multipleOf, min, max) => {
    //how to implement?
}

generateMultiple(4, -8, 5)
//should return either -8, -4, 0, 4

generateMultiple(2.1, 1, 5)
//should return either 2.1, 4.2

generateMultiple(7, 1, 5)
//should return NaN

3 个答案:

答案 0 :(得分:3)

您可以通过将端点除以数字来标准化范围,在该范围内生成一个数字,然后乘以该数字以生成倍数。

const generateMultiple = (multipleOf, min, max) => {
    const low = Math.ceil(min / multipleOf), high = Math.floor(max / multipleOf);
    return low <= high ? 
       (Math.floor(Math.random() * (high - low + 1)) + low) * multipleOf 
       : NaN;
}

答案 1 :(得分:0)

下面的函数会做到这一点.. function generateMultiple(multipleOf, min, max) { return Math.floor(Math.random() * (max-min) + min) ) * multipleOf; }

答案 2 :(得分:0)

像这样声明你的最小值、最大值、多个数字

const multiple = 2;
const min = 1;
const max = 25;

使用下面的代码在函数中生成并在需要时调用

(Math.floor(((Math.random()/multiple) * max) + min)) * multiple