生成指定范围内的随机数 - 各种情况(int,float,inclusive,exclusive)

tgo*_*gos 12 javascript random floating-point integer range

给定一个Math.random()函数,它返回一个介于[0,1)和min max值之间的数字来指定范围,我们如何为以下情况生成数字:

我们想要整数的情况:

  • A: (min,max) ?
  • B: [min,max) return Math.floor(Math.random() * (max - min)) + min;
  • C: (min,max] ?
  • D: [min,max] return Math.floor(Math.random() * (max - min + 1)) + min;

我们想浮动的情况:

  • A: (min,max) ?
  • B: [min,max) return Math.random() * (max - min) + min;
  • C: (min,max] ?
  • D: [min,max] ?

V13*_*V13 0

整数:

  • A:return Math.floor(Math.random() * (max - min - 1)) + min + 1;
  • 乙:正确
  • C:这与[min+1,max+1)相同,所以:return Math.floor(Math.random() * (max - min)) + min + 1;
  • D:正确

对于浮点数,您需要知道您拥有哪种浮点运算。除非您使用特殊的库,否则浮动中的相等通常不会发生,因此拥有封闭范围没有任何实际意义。因此,这四个之间应该没有区别,您可以选择:

return Math.random() * (max-min) + min;

为了使问题有意义,您需要定义平等的最小可接受范围(例如r=0.00000000000000001)。之后,您可以将开域方程(即(min, max))转换为[min+r, max-r]