この記事では、主に PHP で実装されている赤い封筒関数を、主にコードの形で紹介します。私は赤い封筒を書くのが初めてで、赤い封筒についてはあまり詳しくないので、皆さんのお役に立てれば幸いです。
for ($i=1; $i < $p; ++$i) { $s2 = ($sum - ($p - $i) * 0.01)/($p - $i); //echo $s2;die; $money = rand(1,$s2*100); $money = number_format($money/100,2,'.',','); $sum = $sum - $money; $wamp[$i] = $money; } //format_number(要转换的浮点数,要分隔的符号) echo "<hr/>"; echo "<pre class="brush:php;toolbar:false">"; print_r($wamp); echo "<pre class="brush:php;toolbar:false">"; } //echo 2;
基本的に赤い封筒機能を実現できます。主にアイデアについて話します。
シナリオ パーティーのお祝いに赤い封筒を送りたいと考えている 50 人の生徒からなるクラスメートグループがあります
まず、全員が赤い封筒を受け取り、全員が赤い封筒を受け取る確率は基本的に同じです
すると、各人が赤い封筒を受け取る確率 = (赤い封筒の現在の金額 - (現在赤い封筒を受け取っていない人の数) *赤い封筒を受け取った各人の最低額) / 赤い封筒を受け取っていない現在の人数
$safe_total 全員が赤い封筒を受け取る確率 $total 現在の赤い封筒の額 $min 赤い封筒の最低額人が受け取る封筒
その場合、式は $safe_total = ($total - ($num - $i) * $min) / ($num - $i); になります
重要なのは、コードが一意ではないことです。
以下は参照コードです
function getRedGift($total, $num = 10) { $min = 0.01; $wamp = array(); $returnData = array(); for ($i = 1; $i < $num; ++$i) { $safe_total = ($total - ($num - $i) * $min) / ($num - $i); //红包金额的最大值 为了是大部分个人获得的红包金额一定 if ($safe_total < 0) break; $money = @mt_rand($min * 100, $safe_total * 100) / 100;//随机产生一个红包金额 $total = $total - $money;//剩余红包总额 $wamp[$i] = round($money, 2);//保留两位有效数字 } $wamp[$i] = round($total, 2); $returnData['MoneySum'] = $wamp; $returnData['newTotal'] = array_sum($wamp); return $returnData; } //测试 $data = getRedGift(100, 10); echo "<pre class="brush:php;toolbar:false">"; print_r($data); echo "<pre class="brush:php;toolbar:false">";
関連する推奨事項:
以上がPHP は赤い封筒関数コードを実装しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。