生成随机数但有扭曲

时间:2010-07-02 18:48:15

标签: php random numbers

我需要生成一个随机数。

但扭曲的是,较低数字的百分比应大于较高数字。

例如。

rand> 1到100

13 下, 的 15 下, 的 12 下, 的 16 下, 87, 的 15 下, 的 27 下, 的 12 下, 的 1 下, 的 12 下, 98, 的 12 下, 53, 的 12 下, 的 14 ....

粗体整数将从1-100范围返回。

数学应该如此rand = a number lower than max/2

希望你们能帮忙。

Ps,矩阵怎么会进入这个?我不擅长数学:(


绝对答案似乎就是那个。

$up = $down = 0;
while(true)
{
   if(abs((rand()%150)-50) < 50)
   {
      $up++;
   }else
   {
      $down++;
   }
   if( ($up + $down) == 500){ break;}
}

echo $up . '/' . $down;

3 个答案:

答案 0 :(得分:5)

怎么样

n = abs((rand()%150)-50)

答案 1 :(得分:3)

$x = rand(0,1) ? rand(1,100) : rand(1,50);

简单方法:第一个rand(0,1)在两个案例之间进行选择。随机范围为1..50或1..100。由于1,100已经包含1,50,后者的范围在100%的时间内被选中,前者仅在2次中有1次被选中。

如果你想要一个几乎从不选择最高数字99的分布,但是较低的数字1..20非常频繁,那么一个简单的rand(1,rand(1,100))就可以了。

答案 2 :(得分:0)

$rand = (rand() * rand()) / (getrandmax() * getrandmax());

这将为您提供0到1之间的随机数,很可能会落入范围的下端,而较大数字的概率会呈指数下降。然后,您可以将此结果缩放到任何所需的范围。