带分数的概率PHP数组
我有以下数组:带分数的概率PHP数组,php,math,random,Php,Math,Random,我有以下数组: public $percentage = array( 0 => 20.30, 1=> 19.96, 2=> 14.15, 3=> 45.59 ); //总数为100% 我需要一个随机函数以值的百分比返回键 例如:获得0的可能性为20.30%,获得2的可能性为14.15%, 第一个用户得到0,第二个用户得到2 请告诉我您建议我使用的功能。$random\u n=mt\u rand(010000)/100; $random_n =
public $percentage = array(
0 => 20.30,
1=> 19.96,
2=> 14.15,
3=> 45.59
);
//总数为100%
我需要一个随机函数以值的百分比返回键
例如:获得0的可能性为20.30%,获得2的可能性为14.15%,
第一个用户得到0,第二个用户得到2
请告诉我您建议我使用的功能。$random\u n=mt\u rand(010000)/100;
$random_n = mt_rand(0,10000)/100;
while(true){
if($random_n <= $percentage[0])
echo 0; break;
else if($random_n <= $percentage[1])
echo 1; break;
else if($random_n <= $percentage[2])
echo 2; break;
else if($random_n <= $percentage[3])
echo 3; break;
else
$random_n = mt_rand(0,10000)/100; //generate a new random #
}
while(true){
如果($random\n我会做如下事情:
取一个介于1和10000之间的随机数(因为您有四个有效数字)
如果数字在1到2030之间,那么它是零,如果它在2031到(2031+1996)之间,那么它是1等等
利润
将百分比转换为累积概率,然后将其与随机数进行比较
如果随机数属于某个类别,则输出结果。如果不是,则移动到下一个类别,直到找到一个为止。这允许您根据数组中说明的百分比概率输出一个数字
$percentage = array(
0 => 20.30,
1=> 19.96,
2=> 14.15,
3=> 45.59
);
$random = mt_rand(0,10000)/100;
foreach ($percentage as $key => $value) {
$accumulate += $value;
if ($random <= $accumulate) {
echo $key;
break;
}
}
$percentage=array(
0 => 20.30,
1=> 19.96,
2=> 14.15,
3=> 45.59
);
$random=mt_兰特(010000)/100;
foreach($键的百分比=>$值){
$acculate+=$value;
如果($random函数必须做什么?我无法想象你想要一个概率为20.3%的函数返回0,概率为14.15%的函数返回2等等?你是否提取了概率为20.30%的零。问题是,你生成了一个随机数,假设它是10,然后根据数组,结果是0。如果随机数是25,结果为3。如果随机数为50,则不会显示任何内容。
$percentage = array(
0 => 20.30,
1=> 19.96,
2=> 14.15,
3=> 45.59
);
$random = mt_rand(0,10000)/100;
foreach ($percentage as $key => $value) {
$accumulate += $value;
if ($random <= $accumulate) {
echo $key;
break;
}
}