【问题标题】:When I execute a Math.random() function why is it able to return "1" when "1" is exclusive?当我执行 Math.random() 函数时,为什么当“1”独占时它能够返回“1”?
【发布时间】:2016-02-01 21:04:03
【问题描述】:

当我调用下面的 randomNumber() 函数时,它总是将“1”打印到控制台。这让我很困惑,因为我认为“0”是包容性的,而“1”是排斥性的。如果范围是“0”到“1”,那么 randomNumber() 不会永远返回“1”吗?为什么程序会这样做?

以下是相关代码:

function randomNumber(min,max) {
         return Math.random()* (max-min) + min;
}

var rand= Math.ceil(randomNumber(0,1));

console.log(rand);

【问题讨论】:

  • 不是random函数,是Math.ceil -- 输入0.00001,执行ceil函数仍然会得到1。
  • 因为Math.ceil()
  • 从数学上讲,它是包容还是排斥并没有太大区别:来自(0,1)的随机与来自[0,1]的随机基本相同。恰好得到01 的事件的概率为零,尽管它仍有可能发生。

标签: javascript function random max min


【解决方案1】:

因为rand不是随机数生成器的输出;它是输出的ceiling,定义为大于或等于输出的最小整数。在你的情况下,这是 1。

试试这个:

function randomCharge(min,max) {
    return Math.random()* (max-min) + min;
}

var rand= randomCharge(0,1);

console.log(rand);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-31
    • 2018-01-22
    • 2017-07-19
    • 1970-01-01
    • 2020-09-28
    • 1970-01-01
    相关资源
    最近更新 更多