≡
  • 网络编程
  • 数据库
  • CMS技巧
  • 软件编程
  • PHP笔记
  • JavaScript
  • MySQL
位置:首页 > 网络编程 > PHP笔记

php随机红包算法

人气:97 时间:2022-10-04

这篇文章主要为大家详细介绍了php随机红包算法,具有一定的参考价值,可以用来参考一下。

大家好,对php随机红包算法感兴趣的小伙伴,下面一起跟随四海网的小编来看看php随机红包算法的例子吧。

/**
 * 
 * @param php随机红包算法
 * @arrange (512.笔记) www.q1010.com

 * @param $n 红包个数
 * @param $sum 总金额 整数
 * @param $index_max 最大金额在数组中索引
 * @param $error
 * @return array|false
*/
public static function GenRandRePacketsData($n,$sum,&$index_max,&$error)
{
//$n = 20;
//$sum = 300;
if($sum < $n)
{
$error = '金额总数不能小于红包个数'; //$error = '金额总数必须大于红包个数';
return false;
}
if($n > 50)
{
$error = '红包数量不能大于50';
return false;
}
//$sum = $sum * 100;//转为分
$rst = [];
$ave = intval($sum/$n); // 金额除去红包个数 平均值 test:3/3 = 1
$one_rst = rand(1,$ave); // 随机取1到平均值的数
$subSum = $one_rst; // 1
//$rst[] = $one_rst/100;
$rst[] = $one_rst; // $rst = ['0'=>1];
$index_min = 0;
$index_max = 0;
$min = $one_rst; // 1
$max = $one_rst; // 1
for($i = 2; $i <= $n; $i ++)
{
$ave = intval(($sum - $subSum)/($n - $i + 1)); // 1
$one_rst = rand(1,$ave); // 1
if($min > $one_rst) // 1 > 1
{
$min = $one_rst;
$index_min = $i -1;
}
if($max < $one_rst) // 1 < 1
{
$max = $one_rst;
$index_max = $i -1;
}
//$rst[] = $one_rst/100;
$rst[] = $one_rst;
$subSum += $one_rst; // 1
}
$left = $sum - $subSum;
if($left > 0)
{
//$rst[$index_min] = ($rst[$index_min] + $left/100);
$rst[$index_min] = ($rst[$index_min] + $left);
if($rst[$index_min] > $max)
{
$max = $rst[$index_min];
$index_max = $index_min;
}
}
//检测重复的最大值处理,确保最大值唯一
/*for($i =0; $i < $n; $i++)
{
if($rst[$i] === $max && $i !== $index_max)
{
$one_rst = $rst[$i] -1;
$rst[$i] = $one_rst;
$rst[$index_max] = $max + 1;
break;
}
}*/
//重新乱序 http://www.q1010.com/
shuffle($rst);
//查找最大值http://www.q1010.com/
$index_max = 0;
$max = $rst[0];
for($i =1; $i < $n; $i ++)
{
if($rst[$i]> $max)
{
$index_max = $i;
$max = $rst[$i];
}
}
return $rst;
}

本文来自:http://www.q1010.com/173/22742-0.html

注:关于php随机红包算法的内容就先介绍到这里,更多相关文章的可以留意四海网的其他信息。

关键词:随机

您可能感兴趣的文章

  • php生成n个随机数,要求n个数的和等于自定义数值
  • php获取四位字母和数字的随机数
  • php生成指定长度的随机数
  • PHP生成32位随机数
  • php随机数概率相同吗
  • php生成随机数
  • php数组随机排序
  • wordpress正文随机段落中插入adsense广告
  • php生成随机密码自定义函数的简单示例
  • php从数组随机抽取一些元素的简单示例
上一篇:php生成n个随机数,要求n个数的和等于自定义数值
下一篇:php抽奖概率算法
热门文章
  • PHP 写入WRITE编码为UTF8的文件示例
  • PHP 中文字符串截取函数示例:支持gb2312,gbk,big
  • PHP 简单留言板的制作示例
  • 解决Fatal error: Call to undefined function mb_convert_encoding() in错误问题
  • PHP语言基础(标记、注释、变量、数组、常量、函数)示例
  • php 生成迅雷链接的简单示例
  • php 获取短网址的实现方法
  • PHP 通用分页类的简单示例
  • PHP 使用文件方式导入导出整个MYSQL数据库的实现方法
  • php 获取MYSQL错误的简单示例
  • 最新文章
    • 解决PHP使用redis实现统计缓存MySQL压力的问题
    • php 简单的上传进度条的简单示例
    • php 给html中引用的js和css路径打上版本号的实现方法
    • php 实现计算年龄精准到年月日的实例
    • php+ajax无刷新分页的简单示例
    • 解决php+ajax无刷新上传图片的问题
    • 解决PHP生成HTML静态页面的问题
    • 解决PHP使用uniqid函数生成唯一ID的问题
    • 解决PHP防刷票的一些问题
    • 微信access_token的获取开发的实现方法

四海网收集整理一些常用的php代码,JS代码,数据库mysql等技术文章。