JavaScript随机数

Ade*_*lin 3 javascript math

这可能是比编程更多的数学问题.在JS我想要一个函数,在一个区间中返回一个随机整数,让我们说1-6,这就是我发现的:

// Returns a random integer between min and max
// Using Math.round() will give you a non-uniform distribution!
function getRandomInt(min, max) {
  return Math.floor(Math.random() * (max - min + 1)) + min;
}
Run Code Online (Sandbox Code Playgroud)

如果我将其复制并粘贴到我的代码中,我会感到内疚.我不明白这一点:为什么我们从最大值中减去min,加1,将答案乘以Math.random()然后加上min.我手动在纸上累了几个数字,它工作得很好!但我不明白为什么!

cou*_*udy 5

假设你已经理解了Math.floorand 的行为Math.random,这里是一步一步的其余部分:

  • Math.random()0(包括)和1(不包括)之间的随机数
  • Math.random() * max0(包括)和max(不包括)之间的随机数
  • Math.floor(Math.random() * max)↝ (incl.)和(excl.)之间的随机整数0max
  • Math.floor(Math.random() * (max - min)) + minmin(incl.)和max(excl.)之间的随机整数
  • Math.floor(Math.random() * ((max + 1) - min)) + minmin(incl.)和max+1(excl.)之间的随机整数(OR之间min和之间max)