Write a red envelope program using PHP
Http://www.jb51.net/article/69815.htm
Submission: Hebedich font: [Increase decrease] Type: Reprint time: 2015-07-22 send red envelopes is a recent very fire of a thing, everyone more or less have sent or received red envelopes, then look at a we often encounter in the life of a PHP implementation of red Envelopes program algorithm, I hope this program will help you to open your friends.
Using PHP to send red envelopes, when we enter the number of red envelopes and the total amount, PHP will be based on these two values randomly allocated each amount, to ensure that everyone can receive a red envelope, each red envelope amount is different, is to request the amount of red envelopes, all the total amount should be equal to the total amount.
Let's start by analyzing the rules.
Set the total amount is 10 yuan, there are n people randomly pick:
N=1 the first one
The red envelope amount =x yuan;
N=2 a second
To ensure that the second red envelope can be issued normally, the first red envelope amount = 0.01 to 9.99 a random number.
The second red envelope =10-the first red envelope amount;
N=3 a third
A random number between red envelopes 1=0.01 to 9.99
A random number of red envelopes 2=0.01 to (10-red envelope 1-0.01)
Red Envelopes 3=10-Red Envelopes 1-Red Envelopes 2
......
So we get a rule, in allocating the current red envelope amount, the minimum amount required to reserve the remaining red and white, and then in 0.01 to the total amount-reserve amount of random number, the resulting random number is the current red envelope allocation amount.
In practice, the program will first assign a good amount of red envelopes, that is, when the red envelopes, the number of red envelopes and the amount of each red envelope is allocated well, then users to rob red envelopes, we randomly give users back a red envelope can.
Red Envelope Distribution Code:
?
12345678910111213 |
$total
=20;
//红包总金额
$num
=10;
// 分成10个红包,支持10人随机领取
$min
=0.01;
//每个人最少能收到0.01元
for (
$i
=1;
$i
<
$num
;
$i
++)
{
$safe_total
=(
$total
-(
$num
-
$i
)*
$min
)/(
$num
-
$i
);
//随机安全上限
$money
=mt_rand(
$min
*100,
$safe_total
*100)/100;
$total
=
$total
-
$money
;
echo ‘第‘
.
$i
.
‘个红包:‘
.
$money
.
‘ 元,余额:‘
.
$total
.
‘ 元 ‘
;
}
echo ‘第‘
.
$num
.
‘个红包:‘
.
$total
.
‘ 元,余额:0 元‘
;
|
Running the above code will output the following results:
The 1th red envelope, the amount of 2.08 yuan, the balance of 17.92 yuan
The 2nd red envelope, the amount of 1.81 yuan, the balance of 16.11 yuan
The 3rd red envelope, the amount of 0.15 yuan, the balance of 15.96 yuan
The 4th red envelope, the amount of 1.61 yuan, the balance of 14.35 yuan
The 5th Red envelope, the amount of 1.11 yuan, the balance of 13.24 yuan
The 6th red envelope, the amount of 1.51 yuan, the balance of 11.73 yuan
The 7th Red envelope, the amount of 1.21 yuan, the balance of 10.52 yuan
The 8th red envelope, the amount of 2.58 yuan, the balance of 7.94 yuan
The 9th red envelope, the amount of 5.4 yuan, the balance of 2.54 yuan
The 10th red envelope, the amount of 2.54 yuan, the balance of 0 yuan
Enclose the complete code:
HTML code
?
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
<
script type
=
"text/javascript" src
=
"http://libs.useso.com/js/jquery/1.7.2/jquery.min.js"
></
script
>
<
style
>
.demo{width:300px; margin:60px auto 10px auto}
@media only screen and (min-width: 420px) {
.demo{width:500px; margin:60px auto 10px auto}
}
.demo p{height:62px; line-height:30px}
.demo p label{width:100px; text-align:right}
.input{width:140px; height:24px; line-height:14px; border:1px solid #d3d3d3}
button, .button {
color: white;border: none;box-shadow: none;
font-size: 17px;font-weight: 500;font-weight: 600;
border-radius: 3px;padding: 15px 35px;margin: 26px 5px 0 0px;cursor: pointer; }
button:hover, .button:hover { }
#result{width:360px; margin:10px auto}
#result p{line-height:30px}
#result p span{margin:4px; color:#f30}
</
style
>
</
head
>
<
body
>
<
div id
=
"main"
>
<
div class
=
"demo"
>
<
button
>生成10个红包,总金额20元</
button
>
</
div
>
<
div id
=
"result"
></
div
>
<
div class
=
"ad_76090"
><
script src
=
"/js/ad_js/bd_76090.js" type
=
"text/javascript"
></
script
></
div
><
br
/>
</
div
>
<
script
>
$(function(){
$("button").click(function(){
$.ajax({
type: ‘POST‘,
url: ‘bao.php‘,
dataType: ‘json‘,
beforeSend: function(){
$("#result").html(‘正在分配红包‘);
},
success: function(json){
if(json.msg==1){
var str = ‘‘;
var res = json.res;
$.each(res,function(index,array){
str += ‘<
p
>第<
span
>‘+array[‘i‘]+‘</
span
>个红包,金额<
span
>‘+array[‘money‘]+‘</
span
>元,余额<
span
>‘+array[‘total‘]+‘元</
span
></
p
>‘;
});
$("#result").html(str);
}else{
$("#result").html(‘数据出错!‘);
}
}
});
});
});
</
script
>
|
PHP code
?
123456789101112131415161718192021 |
<?php
header(
"Content-Type: text/html;charset=utf-8"
);
$total
=20;
//红包总额
$num
=10;
// 分成10个红包,支持10人随机领取
$min
=0.01;
//每个人最少能收到0.01元
for (
$i
=1;
$i
<
$num
;
$i
++) {
$safe_total
=(
$total
-(
$num
-
$i
)*
$min
)/(
$num
-
$i
);
//随机安全上限
$money
=mt_rand(
$min
*100,
$safe_total
*100)/100;
$total
=
$total
-
$money
;
$arr
[
‘res‘
][
$i
] =
array
(
‘i‘ =>
$i
,
‘money‘ =>
$money
,
‘total‘ =>
$total
);
}
$arr
[
‘res‘
][
$num
] =
array
(
‘i‘
=>
$num
,
‘money‘
=>
$total
,
‘total‘
=>0);
$arr
[
‘msg‘
] = 1;
echo json_encode(
$arr
);
?>
|
The above is the whole content of this article, I hope that we are proficient in the application of PHP to complete the red envelope program to help.
Write a red envelope program using PHP