| 
 $prize = array( 
 1 => 3.5,  //3.5%机率 
 2 => 2.5,  
 3 => 6,  
 4 => 2,  
 5 => 42,  //42%机率 
 6 => 36,  
 7 => 2,  
 8 => 4,  
 9 => 2 
); 
//最后确认相加等于100 
$prizeList = array( 
 1 => array('小仙子'),  
 2 => array('5Q币'),  
 3 => array('38888游戏币'),  
 4 => array('88888游戏币'),  
 5 => array('谢谢参与!'),  
 6 => array('欢迎下次再来!'),  
 7 => array('10Q币'),  
 8 => array('888银元宝(绑定)'),  
 9 => array('随机高级坐骑(绑定)') 
); 
//unset($prize[7]); 直接把10Q这个奖品去掉 
  
$times = 10; 
$max = 0; 
foreach ($prize as $k => $v) 
{ 
 $max = $v * $times + $max; 
 $row['v'] = $max; 
 $row['k'] = $k; 
 $prizeZone[] = $row; 
} 
  
$max--; //临界值 
$rand = mt_rand(0, $max); 
$zone = 1; 
foreach ($prizeZone as $k => $v) 
{ 
 if ($rand >= $v['v']) 
 { 
  if ($rand >= $prizeZone[$k + 1]['v']) 
  { 
   continue; 
  } 
  else 
  { 
   $zone = $prizeZone[$k + 1]['k']; 
   break; 
  } 
 } 
 $zone = $v['k']; 
 break; 
} 
print_r($prizeList[$zone][0]); 
 |