在Javascript中,如何在0 - 580之间创建一个随机偶数乘以20?
例如:220,360,180,0(min),400,200,580(最大)
答案 0 :(得分:3)
你想要增量20,所以你真正需要的是一个0到29范围内的整数,然后乘以20.例如:
var max = (580/20) + 1;
var result = 20 * (Math.floor(Math.random())*max)
我们正在向max
添加一个,因为Math.random()是在(包括0)和(不包括1)之间的均匀分布数,所以因为我们使用Math.floor,所以最大值必须大1
答案 1 :(得分:3)
这种方法会创建一个随机数,然后将其向下舍入到最接近的倍数:
当您需要 0< = randomMultiple< = max
时var random = Math.random() * (580 + 20);
randomMultiple = random - (random % 20);
当您需要 0< = randomMultiple<最大 强>
var random = Math.random() * 580;
randomMultiple = random - (random % 20);
答案 2 :(得分:1)
使用这样的原则:Generate random number between two numbers in JavaScript
请记住,如果您希望最大结果为580,那么您想要乘以20的最大整数将是29(或580/20)。然后添加一些逻辑以确保整数是偶数。
Ta da!
答案 3 :(得分:1)
试试这个:
var result = parseInt(Math.random()*30)*20;
29 * 20 = 580
Math.random()返回[0..1)
结果介于0..580之间,步数为20
答案 4 :(得分:0)
这是一个通用的javascript单行程序,可用于任何范围和任何倍数。
基本上,我们在这里尝试做的是找出一个范围,0到 N ,当乘以给定的多个时,它们保持在[0, 最大 - 最小]。
在这种情况下 N ,简单地说,(max - min)/ multiple 或 range / multiple 。
一旦我们有 N ,我们就可以使用Math.random()来获得0- N 之间的随机数,并将其乘以多数。接下来,我们只需添加 min 。
我们假设 min 和 max 已经是倍数的倍数。
请注意,Math.random()输入的附加+1是因为Math.random()返回0(包括)和1(独占)之间的数字。因此,Math.random()永远不会返回1.如果我们没有考虑到这一点,我们就永远无法在结果中包含最大数字。
/*
* Returns a random number within range [min,max]
*
* min and max must be multiples of multiple
* (note that 0 is a multiple of all integers)
*/
function randomMultiple (min, max, multiple) {
return Math.floor(Math.random() * (((max - min)/multiple)+1)) * multiple + min;
}
console.log(randomMultiple(0, 580, 20));