实现代码:
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' => '一等奖');