我需要生成一个随机数。
但扭曲的是,较低数字的百分比应大于较高数字。
例如。
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;
答案 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之间的随机数,很可能会落入范围的下端,而较大数字的概率会呈指数下降。然后,您可以将此结果缩放到任何所需的范围。