随机输出“苹果”,“橘子”,“香蕉”要求输出“苹果”的概率为50%,“橘子”的概率为30%,“香蕉”的概率为20% ? 1.第一种算法 function getRandom($pr){ ? ? $temp = rand(0,array_sum($pr)); ? ? $left = 0; ? ? $right = 0;? ? ? foreach ($pr as $k=>$v){ ? ? ? ? $right+=$v;? ? ? ? ? if($left<=$temp && $temp<$right){ ? ? ? ? ? ? return $k; ? ? ? ? } ? ? ? ? $left+=$v; ? ? } } ? //转盘抽奖数据 function getAwardData(){ ? ? return [ ? ? ? ? 1=>['id'=>1,'pr'=>50], ? ? ? ? 2=>['id'=>2,'pr'=>30], ? ? ? ? 4=>['id'=>4,'pr'=>20],? ? ? ]; } ? ? $awardData ?= getAwardData(); //抽奖的数据 foreach ($awardData as $v){ ? ? $pr[$v['id']] = $v['pr']; } $award_id = ?getRandom($pr); print_r('id:'.$award_id); ? 第二种 ? //str_shuffle来处理 ? $array=array('1'=>'苹果','2'=>'橘子','3'=>'香蕉'); $string="1111122233"; $key=str_shuffle($string); echo $array[$key{0}]; ?
|