<?php
const HEX_TEMP = "SE1QLBDJK5MHN6O7RG80XZIV3PTFW942ACYU"; // 进制模板:作用缩短数字
const HEX_LEN = 36;
/**
* 进制算法
* @param $num
* @return string
*/
function hexMax($num) {
$str = "";
do {
$remainder = bcdiv($num, HEX_LEN); // 商数
$quotient = bcmod($num, HEX_LEN); // 余数
$char = HEX_TEMP[intval($quotient)]; // 字符位置
$str = $char . $str;
$num = $remainder;
} while ($num >= 1);
return $str;
}
$joinId = 3001; // 参与ID
$courseId = 300; // 活动ID
$baseNum = 1679618; // 基础数值 保证生成进制字符不会低于5位
$len = 100; // 100W数据测试重复性
$arr = [];
for ($i = 0; $i < $len; $i ++) {
$code = $joinId - $courseId + $baseNum; // 实际抽奖码
$joinId += 1; // 下一个参与ID
echo("[输出抽奖] " . hexMax($code)."</br>");
$arr[] = $code;
}
$runLen = count($arr); // 加入元素总数
$notLen = count(array_unique($arr)); // 去重元素后总数
echo("[测试长度] " . $len."</br>");
echo("[实际长度] " . $runLen."</br>");
echo("[去重长度] " . $notLen."</br>");
网友回复
- threejs如何做个三维搭积木的游戏?
- three如何实现标记多个起始路过地点位置后选择旅行工具(飞机汽车高铁等),最后三维模拟行驶动画导出mp4?
- ai实时驱动的3d数字人可视频聊天的开源技术有吗
- swoole+phpfpm如何实现不同域名指向不同目录的多租户模式?
- 如何用go替换nginx实现请求phpfpm解析运行php脚本?
- 有没有浏览器离线运行进行各种文档、图片、视频格式转换的开源工具?
- 如何使用go语言搭建一个web防火墙?
- linux如何检测特定网络协议比如http协议中报文是否包含特点关键词并阻止返回给客户?
- 如果在nginx外过滤包含某些关键词的网页并阻止打开?
- 程序员怎么做副业赚钱?



 
				 
			 
			 
				 
			