4

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

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

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

当数字接近极限(100)时,如何使数字变得越来越难出现?

4

3 回答 3

5

平方结果Math.random

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

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

较大的指数更陡峭。

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

于 2012-12-07T06:28:18.143 回答
4

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

在此处输入图像描述

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

上面生成一个 1-10 之间的随机数,然后将其平方以给出一个 1-100 之间的随机数,但偏向于较低的数字。

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

于 2012-12-07T06:29:00.773 回答
0

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

或类似的东西。

于 2012-12-07T06:29:14.683 回答