GuaGuaPrizeClass.php 838 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. <?php
  2. namespace bizHd\promote\classes;
  3. use Yii;
  4. use bizHd\base\classes\BaseClass;
  5. class GuaGuaPrizeClass extends BaseClass
  6. {
  7. public static $baseFile = '\bizHd\promote\models\GuaGuaPrize';
  8. /*
  9. * 计算中奖 ssh 2019.8.10
  10. * [['id'=>1,'v'=>10],['id'=>2,'v'=>5,'id'=>0,'v'=>985]]
  11. * id是奖品id,id=0表示没有中奖。v表示概率,加起来等于1000
  12. * 返回示例:['id'=>1,'v'=>9]
  13. */
  14. public static function getWinRand($proArr)
  15. {
  16. $result = array();
  17. foreach ($proArr as $key => $val) {
  18. $arr[$key] = $val['v'];
  19. }
  20. // 概率数组的总概率
  21. $proSum = array_sum($arr);
  22. asort($arr);
  23. // 概率数组循环
  24. foreach ($arr as $k => $v) {
  25. $randNum = mt_rand(1, $proSum);
  26. if ($randNum <= $v) {
  27. $result = $proArr[$k];
  28. break;
  29. } else {
  30. $proSum -= $v;
  31. }
  32. }
  33. return $result;
  34. }
  35. }