简易 红包生成

<?php
error_reporting(E_ALL || ~E_NOTICE);
Header("content-type:text/html;charset=utf8");
// // $list 是反回的数组
// $list = array(5,5,5,10,10,10); //红包数组

// echo "当前红包还剩:"; var_dump($list);
// echo "<hr>";
// $arr =array_rand($list);  //从红包中随机取出一个
// // var_dump($arr);

//  echo "抽到红包为".$list[$arr];  //输出取出的值
//  unset($list[$arr]);  // 从红包数组中删除这个红包
// echo "<hr>";
// echo  "当前红包还剩:";   var_dump($list);

// echo "<hr>";

function hongbao($total,$n){
    if($total/$n<1){
        for($x=1;$x<=$n;$x++){
            $min = intval($total*100/$n/$n); //红包取值的最小值 ,和平均值相关,跨度为一个相度固定值 ;
            if($x ==1){
                $a= rand($min,intval($total*100/$n));
                $res = $total*100-$a;
                $s = $a/100;
                echo "第{$x}份红包为1:{$s}<br>";
            }elseif($x ==$n){
                $res = $res/100;
                echo "第{$x}份红包为1:{$res}<br>";
            }else{
                $a = rand($min,intval($res/($n-$x)));
                $res = $res-$a;
                $s = $a/100;
                echo "第{$x}份红包为1:{$s}<br>";
            }
        }
    }else{

        for($x=1;$x<=$n;$x++){
            $min = intval($total/$n/$n); //红包取值的最小值 ,和平均值相关,跨度为一个相度固定值 ;
            if($x ==1){
                $a= rand($min,intval($total/$n));
                $res = $total-$a;
                echo "第{$x}份红包为:{$a}<br>";
            }elseif($x ==$n){
                echo "第{$x}份红包为:{$res}<br>";
            }else{
                $a = rand($min,intval($res/($n-$x)));
                $res = $res-$a;
                echo "第{$x}份红包为:{$a}<br>";
            }
        }
    }
}

hongbao(5,10);  //平均分值 不能小于0.01 

?>
时间: 2024-10-06 00:31:42

简易 红包生成的相关文章

微信红包生成算法 (解)

/** * 微信红包生成算法 * * @param int $total 红包金额 * @param int $num 拆分数量 * @param int $min 拆分的红包最小金额数目 */function set_packet($total, $num, $min = 0.01){ for ($i = 1; $i < $num; $i++) { //随机安全上限 $safe_total = ($total-($num-$i)*$min)/($num-$i); //红包金额 $money =

PHP用抛物线的模型实现微信红包生成算法的程序源码

<?php /* *Author:Kermit *Time:2015-8-26 *Note:红包生成随机算法 */ header("Content-type:text/html;charset=utf-8"); date_default_timezone_set('PRC'); #红包生成的算法程序 class reward { public $rewardMoney; #红包金额.单位元 public $rewardNum; #红包数量 public $scatter; #分散

PHP红包生成算法

一.适用场景 红包总金额X,分配成Y个红包,每个红包随机金额. 二.生成算法 /** * 红包生成算法 * @param $money 总金额 * @param $number 红包数量 * @param $ratio 浮动系数 */ function hongbao($money,$number,$ratio = 0.5){ $res = array(); //结果数组 $min = ($money / $number) * (1 - $ratio); //最小值 $max = ($money

随机红包生成算法-python实现

抢红包那么开心,那你知道红包随机算法是怎么样的吗? 我模拟写了一个定额随机红包生成算法,如下. 输入: 红包总额,total 份数,num 调控参数(调控红包最平均差,默认为2) 约束: 每份最少有1分钱,即0.01 份数需为正整数 红包总额 <= 份数×0.01 输出 随机红包序列,序列长度等于红包份数 运气王,即红包数额最大的一份 # -*- coding: cp936 -*- # 思路:先随机出来m个数,然后平均分成m个数字只和的份数,然后将钱平均分给m个人# import random

随机生成红包算法

<?php /** * Created by PhpStorm. * User: kevin_yang * Date: 2018/1/4 * Time: 22:49 */ header('content-type:text/html;charset=utf-8'); ini_set('memory_limit', '256M'); require_once('CreateReward.php'); require_once('Reward.php'); $total = 100; $num =

修改ECSHOP系统红包序列号规律

ECSHOP系统线下发放红包时系统生成的红包序列号是在10000的基础上增加四位随机数字.如果当我们要发放大额度红包的时候,这样的序列号规则难免给人不安全的感觉,万一真的有哪个无聊的人,用一天时间来蒙几个红包序列号出来,那就亏大了.因为最多只要试10000次就可以了,所以我们需要更改一下系统的红包序列号发放规则,让红包的序列号是由a-z,A-Z,0-9的字符组合而成,下面给出修改方法: 1.修改ecs_user_bonus表中bonus_sn字段的数据类型 ECSHOP 2.7.2中该字段类型为

微信红包架构分析

个人红包生成: 1.发红包时,按照设计的快速随机算法,将红包分好若干份. 2.有用户抢红包,直接队列化请求,再从红包序列中取出对应红包 春节红包: 1.红包拆分模块 对红包池(广告商+红包总金额)进行拆分为具体的红包(比如, 苏宁易购:10块, 京东商城:11块) 为了提高性能, 做了如下优化工作: 1.全内存存储和计算, 借鉴redis的实现方式,事件驱动+单线程工作模型(减少因线程切换.加锁导致的CPU消耗). 2.每个节点数据彼此隔离, 同时预先分配加载红包池(广告商+红包总金额). 按照

仿淘宝,京东红包雨(基于Phaser框架)

本红包雨项目是基于HTML5的游戏框架Phaser写的,最终形成的是一个canvas,所以性能很好,但是必须要说的是这个框架比较大,压缩后也有700K左右,所以请慎用. 代码地址: https://github.com/AmosXu/red-packet-rain 1. 效果展示         图片依次是倒计时页面,抢红包页面,拆红包页,红包展示页,这些页面都是写在一个canvas里面的,无刷新的切换效果,性能超级棒 2.代码展示 贴上主要的代码js代码和注释 //初始化图片 let imgj

ECSHOP如何增加红包序列号字符

ECSHOP系统线下发放红包时系统生成的红包序列号是在10000的基础上增加四位随机数字.如果当我们要发放大额度红包的时候,这样的序列号规 则难免给人不安全的感觉,万一有无聊的人,蒙几个红包序列号出来,那就亏大了,因为最多只要试10000次就可以了,所以我们需要更改一下系统的红包序列 号发放规则,让红包的序列号是由a-z,A-Z,0-9的字符组合而成,这样也可以防止网站大量发放红包导致序列号重复.如此实用的功能,教程将给出修改方法: 1.修改ecs_user_bonus表中bonus_sn字段的