ホームページ  >  記事  >  バックエンド開発  >  PHP は赤い封筒関数コードを実装します

PHP は赤い封筒関数コードを実装します

小云云
小云云オリジナル
2018-03-13 09:34:522625ブラウズ

この記事では、主に 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,&#39;.&#39;,&#39;,&#39;); 
	$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[&#39;MoneySum&#39;] = $wamp;
$returnData[&#39;newTotal&#39;] = 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開発WeChat現金赤い封筒関数のコード共有

PHPのランダムな赤い封筒関数の実装

幸運を達成するためのphp赤い封筒関数

以上がPHP は赤い封筒関数コードを実装しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。