php中如何生成指定数量不重复的字符串抽奖码?请问代码怎么写?
网友回复
<?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>");