求php抽奖概率的算法

qq_41885468 2018-06-10 10:22:36
我有个抽奖的轮盘

想 根据自己设置的概率

输出 0 1 2 3 4 5 6 7

这8个奖项 请问 要怎么写这个概率


比如 7 就高概率的 抽到
...全文
1118 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_41885468 2018-06-10
  • 打赏
  • 举报
回复

	/**
	 * 根据概率获取中奖号码
	 */
	static public function get_rand() {
	$arr = array(
	array('id'=>1,'name'=>'t等奖','v'=>1),//特等奖
    array('id'=>2,'name'=>'1等奖','v'=>5),//1等奖
    array('id'=>3,'name'=>'2等奖','v'=>10),//2等奖
    array('id'=>4,'name'=>'3等奖','v'=>12),//3等奖
    array('id'=>5,'name'=>'4等奖','v'=>23),//4等奖
    array('id'=>6,'name'=>'5等奖','v'=>59),//5等奖
    array('id'=>7,'name'=>'6等奖','v'=>80),//6等奖
	array('id'=>8,'name'=>'7等奖','v'=>100)//7等奖
    );
	return self::get_rand1($arr);
	}
	static function get_rand1($proArr) {
	    $result = array();
	    foreach ($proArr as $key => $val) {
	        $arr[$key] = $val['v'];
	    }
	    // 概率数组的总概率
	    $proSum = array_sum($arr);
	    asort($arr);
	    // 概率数组循环
	    foreach ($arr as $k => $v) {
	        $randNum = mt_rand(1, $proSum);
	        if ($randNum <= $v) {
	            $result = $proArr[$k];
	            break;
	        } else {
	            $proSum -= $v;
	        }
	    }
	    return $result;
	}









自己找到了 有需要的朋友可以用用 ,数组里面的v是控制概率的

20,359

社区成员

发帖
与我相关
我的任务
社区描述
“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。PHP语法利用了C、Java和Perl,该语言的主要目标是允许web开发人员快速编写动态网页。
phpphpstorm 技术论坛(原bbs)
社区管理员
  • 开源资源社区
  • phpstory
  • xuzuning
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧