生成具有较大数字概率的随机数

时间:2012-12-07 06:25:03

标签: javascript random

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

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

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

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

3 个答案:

答案 0 :(得分:5)

平方Math.random的结果:

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

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

The larger exponents are steeper.

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

答案 1 :(得分:4)

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

enter image description here

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

上面生成一个介于1-10之间的随机数,然后将其平方,得到一个介于1-100之间的随机数,但加权为较低的数字。

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

答案 2 :(得分:0)

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

或类似的东西。