【问题标题】:Generate random numbers with less probabilities of bigger numbers生成较大数字概率较小的随机数
【发布时间】:2012-11-25 07:59:26
【问题描述】:

我想实现一个随机数生成器,它可以让我设置我想要的最大数字,但也让我可以调整概率以使其更难获得更大的数字。

使用它会将相同的概率分配给 100 范围内的任何值。

Math.floor(Math.random()*100);

当数字接近极限 (100) 时,如何让数字越来越难显示?

【问题讨论】:

  • 于是微积分再次重生。
  • 越来越难多少?你预计 0 比 99 多多少?另外,顺便说一句,你的范围实际上是 0 到 99。你永远不会得到 100。如果你想从 0 到 100,乘以 101。如果你想从 1 到 100,乘以 100 并加 1(或使用天花板而不是地板)。
  • 我一直需要这样的东西!好问题!哦,顺便说一句,我不认为你的代码实际上可以生成数字 100。尝试使用 101,因为 Math.random() 的范围是 0 到 1,但 1 是独占的(它永远不会出现)。

标签: javascript random


【解决方案1】:

Math.random的结果求平方:

var result = Math.random();
result = result * result;
result *= 100;
result = Math.floor(result);

您可以通过调整指数来调整曲线。下面是一些不同指数的图表:

如果要使用非整数指数,则需要使用 Math.pow

【讨论】:

    【解决方案2】:

    只需使用具有曲线的数学函数,即可为您提供所需的概率权重。例如,您可以“平方”您的号码:

    var num = Math.pow(Math.floor(Math.random()*10), 2);
    

    上面生成一个介于 1-10 之间的随机数,然后将其平方以给出一个介于 1-100 之间的随机数,但对较小的数字进行加权。

    您可以使用更高的功率进一步增加权重。

    【讨论】:

      【解决方案3】:

      Math.pow(Math.floor(Math.random()*10), 2);

      或类似的东西。

      【讨论】:

        猜你喜欢
        • 2021-06-30
        • 2011-05-24
        • 1970-01-01
        • 2017-10-01
        • 2016-01-26
        • 2012-02-11
        • 2016-01-06
        • 1970-01-01
        相关资源
        最近更新 更多