php 中奖概率算法实现代码

yipeiwu_com6年前PHP代码库

实现代码:

<?php
/**
 *php 中奖概率算法
 *
 */
function get_zj( $jp ,$glname = 'gl'){
	$sum = 0;
	foreach($jp as $k =>$v ){
		$sum += $v[$glname];
	}
 
	$R = rand(1,$sum);//获取随机数
 
	foreach( $jp as $k => $v){
		if( $R <= $v[$glname] ){
			return $v;
		}
		$R = $R - $v[$glname] ;
	}
 
}
 
 
//使用方法
//模拟一个从数据库中读取的 中奖配置  gl 为 中奖的概率 
//例如array( 'gl' => 10 , 'title' => '一等奖');的中奖概率 = 10 / (10+20+30+40)
$jp = array();
$jp[] = array( 'gl' => 10 , 'title' => '一等奖');
$jp[] = array( 'gl' => 20 , 'title' => '二等奖');
$jp[] = array( 'gl' => 30 , 'title' => '三等奖');
$jp[] = array( 'gl' => 40 , 'title' => '未中奖');
 
 
//调用 中奖概率函数 
//返回中奖 信息数组 例如:array( 'gl' => 10 , 'title' => '一等奖');
$zj = get_zj( $jp );
 
//输出数组
var_dump($zj);

使用方法
模拟一个从数据库中读取的 中奖配置 gl 为 中奖的概率
例如array( 'gl' => 10 , 'title' => '一等奖');的中奖概率 = 10 / (10+20+30+40)
$jp = array();
$jp[] = array( 'gl' => 10 , 'title' => '一等奖');
$jp[] = array( 'gl' => 20 , 'title' => '二等奖');
$jp[] = array( 'gl' => 30 , 'title' => '三等奖');
$jp[] = array( 'gl' => 40 , 'title' => '未中奖');

调用 中奖概率函数
返回中奖 信息数组 例如:array( 'gl' => 10 , 'title' => '一等奖');

相关文章

领悟php接口中interface存在的意义

可能大家都懂这些,作为不懂的我猜测了一下这个interface的意义,他就是为了后面调用的时候再调用的方法中调用实现类中interface中存在的内容,好绕口啊,写个例子留作以后看吧pa...

php发送与接收流文件的方法

本文实例讲述了php发送与接收流文件的方法。分享给大家供大家参考。具体如下: sendStreamFile.php 把文件以流的形式发送 receiveStreamFile.php 接收...

php json中文编码为null的解决办法

今天使用json_encode函数,发现中文竟成了null。 原因分析:使用json_encode函数应应使用utf-8编码,我的页面用的是gbk. 解决:在json_encode函数前...

PHP怎样用正则抓取页面中的网址

前言 链接也就是超级链接,是从一个元素(文字、图片、视频等)链接到另一个元素(文字、图片、视频等)。网页中的链接一般有三种,一种是绝对URL超链接,也就是一个页面的完整路径;另一种是相对...

php计算两个日期相差天数的方法

本文实例讲述了php计算两个日期相差天数的方法。分享给大家供大家参考。具体实现方法如下: <?php /** * 求两个日期之间相差的天数 * (针对1970年1月...