异步特定范围随机分配账户的机制,应该是一个erlang/otp 的 gen_server
这个只是一个初步的思路,以后有时间了实现之
- 初始化
1.1. 设定区间左右边界 RangeStart = 10000, RangeLen = 999999
1.2. 设定一个初始范围 Range 比如 [RangeStart, RangeStart+RangeLen),
1.3. 设置一个空有序集合 accountSet (可调整左右边界、写入磁盘) - 按Range范围生产一个随机数,判断是否再 accountSet 中
2.1. 如果存在,重新生成随机数
2.2. 如果不存在写入 accountSet - 检查accountSet
3.1.1 判断 accountSet 左侧连续元素的长度 leftInt(该算法如何时间)
3.1.2 如果 leftInt > 3,删除accountSet最左侧连续的元素,并且调整 Range 左边界,
3.2.1 判断 accountSet 右侧连续元素的长度 RightInt
3.2.2 如果 RightInt > 3 ,删除accountSet最右侧连续的元素,并且调整 Range 右边界
3.3 accountSet 总是再 Range 范围内收敛,直到空为止 - 如果accountSet为空
4.1 RangeStart 设置为 RangeStart2 = RangeStart + RangeLen + 1,
4.2 新的Range有边界自然为 RangeStart2 + RangeLen - 已新的Range范围生产一个随机数,重复步骤2 3 4
Min1 = 1, Max1 = 3.
Min2 = Max1+1, Max2=2*Max1.
Min3=Max2+1,Max3=3*Max1.
Min4=Max3+1,Max4=4*Max1.
[Min1,Max1,Min2,Max2,Min3,Max3,Min4,Max4].