php随机红包算法
内容摘要
这篇文章主要为大家详细介绍了php随机红包算法,具有一定的参考价值,可以用来参考一下。
大家好,对php随机红包算法感兴趣的小伙伴,下面一起跟随php教程的小编来看看php随机红包
大家好,对php随机红包算法感兴趣的小伙伴,下面一起跟随php教程的小编来看看php随机红包
文章正文
这篇文章主要为大家详细介绍了php随机红包算法,具有一定的参考价值,可以用来参考一下。
大家好,对php随机红包算法感兴趣的小伙伴,下面一起跟随php教程的小编来看看php随机红包算法的例子吧。
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 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 | <code class = "language-php" > /** * * @param php随机红包算法 * @arrange (www.idcnote.com) * @param $n 红包个数 * @param $sum 总金额 整数 * @param $index_max 最大金额在数组中索引 * @param $error * @return array|false */ public static function GenRandRePacketsData( $n , $sum ,& $index_max ,& $error ) { //$n = 20; //$sum = 300; if ( $sum < $n ) { $error = '金额总数不能小于红包个数' ; //$error = '金额总数必须大于红包个数'; return false; } if ( $n > 50) { $error = '红包数量不能大于50' ; return false; } //$sum = $sum * 100;//转为分 $rst = []; $ave = intval ( $sum / $n ); // 金额除去红包个数 平均值 test:3/3 = 1 $one_rst = rand(1, $ave ); // 随机取1到平均值的数 $subSum = $one_rst ; // 1 //$rst[] = $one_rst/100; $rst [] = $one_rst ; // $rst = ['0'=>1]; $index_min = 0; $index_max = 0; $min = $one_rst ; // 1 $max = $one_rst ; // 1 for ( $i = 2; $i <= $n ; $i ++) { $ave = intval (( $sum - $subSum )/( $n - $i + 1)); // 1 $one_rst = rand(1, $ave ); // 1 if ( $min > $one_rst ) // 1 > 1 { $min = $one_rst ; $index_min = $i -1; } if ( $max < $one_rst ) // 1 < 1 { $max = $one_rst ; $index_max = $i -1; } //$rst[] = $one_rst/100; $rst [] = $one_rst ; $subSum += $one_rst ; // 1 } $left = $sum - $subSum ; if ( $left > 0) { //$rst[$index_min] = ($rst[$index_min] + $left/100); $rst [ $index_min ] = ( $rst [ $index_min ] + $left ); if ( $rst [ $index_min ] > $max ) { $max = $rst [ $index_min ]; $index_max = $index_min ; } } //检测重复的最大值处理,确保最大值唯一 /*for($i =0; $i < $n; $i++) { if($rst[$i] === $max && $i !== $index_max) { $one_rst = $rst[$i] -1; $rst[$i] = $one_rst; $rst[$index_max] = $max + 1; break; } }*/ //重新乱序 https://www.idcnote.com/ shuffle( $rst ); //查找最大值https://www.idcnote.com/ $index_max = 0; $max = $rst [0]; for ( $i =1; $i < $n ; $i ++) { if ( $rst [ $i ]> $max ) { $index_max = $i ; $max = $rst [ $i ]; } } return $rst ; }</code> |
注:关于php随机红包算法的内容就先介绍到这里,更多相关文章的可以留意
代码注释