实现代码:
php" id="highlighter_454581">
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
<?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' => '一等奖');