大家该当很清楚,这个需求很大略,如果不哀求必中,不哀求限定中的人数,那么,直接随机数(mt_rand)获取即可。
但如果哀求1000个号码不重复。
则只须要一个大略的函数即可办理,废话不多说,以下是思路:

1、初次利用:range(000,999); 天生 如: array(0, ……, 999)的数组

2、利用:shuffle 打乱上面的数组元素排序。

php概率PHP简略实现一个抽奖函数可包管千分一的中奖概率 React

3、利用:array_pop 获取末了一个元素,同时删除该元素。

4、将剩余的有999个元素的写入(或更新)表或redis等缓存文件等待下次利用。

5、利用 sprintf("%03d", 第3步得到的元素) 给抽奖码补零。

以下是代码参考:

function getCode() {$array = array(123, 456, 789, ……); // 此处要改成从数据表或redis等缓存文件中获取到的数组// 如果没有获取到数组,实行天生if (empty($array)) {// 天生拥有0~999的的元素的一维数组$array = range(000,999);// 打乱数组元素排序shuffle($array);}// 第1步 获取数组中末了一个元素$a = array_pop($array);// 第2步 更新到素或缓存// 这里需添加上你们的函数。
将array_pop后的array数组写入或更新到数据表或redis等缓存文件。
// 第3步 补零后return回业务return sprintf("%03d", $a);}

方法很大略,高手略过吧,适宜新手学习,已每一行都添加注释了。
希望能对你有所帮助。