如何生成一个随机数,它是给定数的倍数,同时确保该数也在指定范围内?如果没有这样的倍数,它应该返回 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
答案 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