cari
Rumahphp教程php手册使用PHP编写发红包程序,php编写红包程序

使用PHP编写发红包程序,php编写红包程序

使用PHP发红包,当我们输入红包数量和总金额后,PHP会根据这两个值进行随机分配每个金额,保证每个人都能领取到一个红包,每个红包金额不等,就是要求红包金额要有差异,所有红包金额总额应该等于总金额。

我们先来分析下规律。

设定总金额为10元,有N个人随机领取:
N=1 第一个
则红包金额=X元;
N=2 第二个
为保证第二个红包可以正常发出,第一个红包金额=0.01至9.99之间的某个随机数。
第二个红包=10-第一个红包金额;
N=3 第三个
红包1=0.01至9.99之间的某个随机数
红包2=0.01至(10-红包1-0.01)的某个随机数
红包3=10-红包1-红包2
……

于是我们得到一个规律,在分配当前红包金额时,先预留剩余红白所需最少金额,然后在0.01至总金额-预留金额间取随机数,得到的随机数就是当前红包分配的金额。

实际应用中,程序先将红包金额分配好,即发红包时,红包个数以及每个红包的金额都分配好了,那么用户来抢红包时,我们随机给用户返回一个红包即可。

红包分配代码:

 
$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 元';  

运行以上代码,会输出以下结果:

第1个红包,金额2.08元,余额17.92元
第2个红包,金额1.81元,余额16.11元
第3个红包,金额0.15元,余额15.96元
第4个红包,金额1.61元,余额14.35元
第5个红包,金额1.11元,余额13.24元
第6个红包,金额1.51元,余额11.73元
第7个红包,金额1.21元,余额10.52元
第8个红包,金额2.58元,余额7.94元
第9个红包,金额5.4元,余额2.54元
第10个红包,金额2.54元,余额0元

附上完整代码:

html代码

<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 {
 background-color: #f30;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 {background-color: #f00; }
#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代码

<&#63;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);
&#63;>

以上所述就是本文的全部内容了,希望对大家熟练应用php完成派红包程序有所帮助。

Kenyataan
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
4 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌

Alat panas

mPDF

mPDF

mPDF ialah perpustakaan PHP yang boleh menjana fail PDF daripada HTML yang dikodkan UTF-8. Pengarang asal, Ian Back, menulis mPDF untuk mengeluarkan fail PDF "dengan cepat" dari tapak webnya dan mengendalikan bahasa yang berbeza. Ia lebih perlahan dan menghasilkan fail yang lebih besar apabila menggunakan fon Unicode daripada skrip asal seperti HTML2FPDF, tetapi menyokong gaya CSS dsb. dan mempunyai banyak peningkatan. Menyokong hampir semua bahasa, termasuk RTL (Arab dan Ibrani) dan CJK (Cina, Jepun dan Korea). Menyokong elemen peringkat blok bersarang (seperti P, DIV),

SecLists

SecLists

SecLists ialah rakan penguji keselamatan muktamad. Ia ialah koleksi pelbagai jenis senarai yang kerap digunakan semasa penilaian keselamatan, semuanya di satu tempat. SecLists membantu menjadikan ujian keselamatan lebih cekap dan produktif dengan menyediakan semua senarai yang mungkin diperlukan oleh penguji keselamatan dengan mudah. Jenis senarai termasuk nama pengguna, kata laluan, URL, muatan kabur, corak data sensitif, cangkerang web dan banyak lagi. Penguji hanya boleh menarik repositori ini ke mesin ujian baharu dan dia akan mempunyai akses kepada setiap jenis senarai yang dia perlukan.

EditPlus versi Cina retak

EditPlus versi Cina retak

Saiz kecil, penyerlahan sintaks, tidak menyokong fungsi gesaan kod

SublimeText3 Linux versi baharu

SublimeText3 Linux versi baharu

SublimeText3 Linux versi terkini

Dreamweaver Mac版

Dreamweaver Mac版

Alat pembangunan web visual