JavaScript - 0到580之间的随机倍数20

时间:2012-10-13 23:21:30

标签: javascript random

在Javascript中,如何在0 - 580之间创建一个随机偶数乘以20?

例如:220,360,180,0(min),400,200,580(最大)

5 个答案:

答案 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));