为了防止 max 的偏差,每次小数范围超过max时,我都会重新计算,而不是去除小数。我认为使用random()会引入一些偏差,但这是可以接受的。
可选 arg decimal是一个整数,表示要包含多少个小数位。
可选的 arg exclude便于从结果中排除特定数字(通常为 0)。
如果省略所有参数,则可以选择随机返回 true 或 false。
基本上,我只是想知道是否有任何方法可以在不增加和更多偏差(甚至减少偏差)的情况下提高速度和效率。似乎while循环可能会减慢它的速度。我将它用于动画,并且不想要有偏见的结果(尤其是在 1.0 到 2.0 之类的小范围内)。
function random(min, max, decimal, exclude) {
if (min == null) return (Math.random()*2 >= 1) ? true : false
var decimal = (decimal == null) ? 1 : Math.pow(10,decimal), result = exclude
while (result == exclude) {
result = max+1
while (result > max) var result = Math.round((Math.random()*(max-min+1)+min)*decimal)/decimal
}
return result
}