您好,欢迎访问一九零五行业门户网

PHP概率计算函数汇总,php概率函数_PHP教程

php概率计算函数汇总,php概率函数其实发这篇博感觉并没有什么用,太简单了,会的人不屑看,不会的人自已动动脑子也想到了。但是看着自已的博客已经这么久没更,真心疼~。粗略算下一篇只有代码的水文,会占用osc至少十几kb的数据库空间呢,但是,一想到乱弹里的然并卵,也就释然了。
chance */ var $data = array(); var $chance_count = 0; function __construct($initdata = array()){ if(!empty($initdata)){ $this->data = $initdata; foreach($initdata as $d){ $this->chance_count += $d['num']; } } } function adddata($name, $chance){ $this->data[]=array('name'=>$name, 'num'=>$chance); $this->chance_count += $chance; } function getone(){ $index = rand(0, $this->chance_count); foreach($this->data as $d){ $index = $index-$d['num']; if($indexadddata('iphone',10);$pro->adddata('watch',30);$pro->adddata('$18',50);$pro->adddata('thank you',10);$pro->adddata('super big',1);for($i=0;$igetone().\n;}
这是一个很经典的概率算法函数:
function get_rand($proarr) { $result = ''; //概率数组的总概率精度 $prosum = array_sum($proarr); //概率数组循环 foreach ($proarr as $key => $procur) { $randnum = mt_rand(1, $prosum); //抽取随机数 if ($randnum 20,'b'=>30,'c'=>50);
模拟函数执行过程:
总概率精度为20+30+50=100
第一次数组循环,$procur=20
假设抽取的随机数rand(1,100),假设抽到$randnum=55
if判断-------
如果$randnum<=20,则result=a
否则进入下一循环,总概率精度变为100-20=80
第二次数组循环,$procur=30
假设抽取的随机数rand(1,80),假设抽到$randnum=33
if判断---------
如果$randnum1,'prize'=>'平板电脑','v'=>1), '1' => array('id'=>2,'prize'=>'数码相机','v'=>5), '2' => array('id'=>3,'prize'=>'音箱设备','v'=>10), '3' => array('id'=>4,'prize'=>'4g优盘','v'=>12), '4' => array('id'=>5,'prize'=>'10q币','v'=>22), '5' => array('id'=>6,'prize'=>'下次没准就能中哦','v'=>50),); /* * 每次前端页面的请求,php循环奖项设置数组, * 通过概率计算函数get_rand获取抽中的奖项id。 * 将中奖奖品保存在数组$res['yes']中, * 而剩下的未中奖的信息保存在$res['no']中, * 最后输出json个数数据给前端页面。 */foreach ($prize_arr as $key => $val) { $arr[$val['id']] = $val['v'];}$rid = get_rand($arr); //根据概率获取奖项id $res['yes'] = $prize_arr[$rid-1]['prize']; //中奖项 unset($prize_arr[$rid-1]); //将中奖项从数组中剔除,剩下未中奖项 shuffle($prize_arr); //打乱数组顺序 for($i=0;$i http://www.bkjia.com/phpjc/1054512.htmlwww.bkjia.comtruehttp://www.bkjia.com/phpjc/1054512.htmltecharticlephp概率计算函数汇总,php概率函数 其实发这篇博感觉并没有什么用,太简单了,会的人不屑看,不会的人自已动动脑子也想到了。但是看着...
其它类似信息

推荐信息