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

JavaScript-0-580之间20的随机倍数,javascript,random,Javascript,Random,在Javascript中,如何在0-580之间创建一个随机偶数乘以20 例如:220、360、180、0(最小值)、400、200、580(最大值)您希望增量为20,因此您真正需要的是一个介于0到29之间的整数,然后乘以20。例如: var max = (580/20) + 1; var result = 20 * (Math.floor(Math.random())*max) 我们正在将一个添加到max,因为Math.random()是一个均匀分布的数字,介于(包括0)和(不包括1)之间,因

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


例如:220、360、180、0(最小值)、400、200、580(最大值)

您希望增量为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。

使用如下原则:

请记住,如果希望最大结果为580,则希望乘以20的最大整数为29(或580/20)。然后添加一些逻辑以确保整数是偶数


塔达

这种方法创建一个随机数,然后将其向下舍入到最接近的倍数:

当您需要0时,尝试使用以下方法:

var result = parseInt(Math.random()*30)*20;
29*20=580

Math.random()返回[0..1)


结果介于0..580之间,步进20

这里是一个通用javascript单行程序,可用于任何范围和任何多行程序

本质上,我们在这里要做的是算出一个范围,0到N,当乘以给定的倍数时,它保持在[0,max-min]范围内

在这种情况下,N是简单的,(max-min)/multiple,或range/multiple

一旦有了N,我们就可以使用Math.random()得到一个介于0-N之间的随机数,然后将其乘以倍数。接下来,我们只需加上min

我们假设最小值和最大值已经是倍数的倍数

请注意,Math.random()的输入增加+1是因为Math.random()返回一个介于0(包括)和1(排除)之间的数字。因此,Math.random()永远不能返回1。如果我们不考虑这一点,我们将永远无法在结果中包含最大值

/*
*返回[min,max]范围内的随机数
*
*最小值和最大值必须是倍数的倍数
*(请注意,0是所有整数的倍数)
*/
函数随机倍数(最小值、最大值、倍数){
返回Math.floor(Math.random()*((max-min)/multiple)+1))*multiple+min;
}

console.log(randomMultiple(0580,20));
到目前为止你想出了什么?20的倍数总是偶数。Math.floor(Math.random()*11)*60;但它不能生成600!天哪!这条路太漂亮了,我永远也找不到它:-(谢谢你的帮助!
var random = Math.random() * 580;
randomMultiple = random - (random % 20);
var result = parseInt(Math.random()*30)*20;