我想知道在min和max之间生成随机浮点数的最佳方法是什么。 min和max都是 EXCLUSIVE 。
例如,min = -1,max = 100.然后随机数可以是-0.999或99.999,但不能是-1或100.
我提出的方法是首先生成-1(包括)和100(不包括)之间的随机数:
Math.random()*(max-min)+min
如果该值等于-1,则获取另一个随机数,直到它不为-1。
整个事情将是:
var min = -1, max = 100;
var rand = min;
while(rand==min)
rand = Math.random()*(max-min)+min;
是否有更好的方法可以这样做,所以我不必多次运行Math.random()
?
答案 0 :(得分:3)
您可以先检查随机数,只使用不等于零的值。
var min = -1,
max = 100,
r;
while (!(r = Math.random())); // generate and check and use only r !== 0 values
console.log(r * (max - min) + min);
答案 1 :(得分:1)
只需使用您的代码删除具有所需精确度的限制
var p = 0.000001; //desired precission
var min = -1+p, max = 100-p;
rand = Math.floor(Math.random()*(max-min)+min)