遇到一个随机数面试题,目测无最优解
偶然看到群里别人发的一条面试题

生成随机数 (由0~9的阿拉伯数字组成的,长度是6~15个字符)
要求
1. 不能出现连续3个以上相同的数字(11234,2333456 是不允许的)
2. 不能出现3个连号的情况( 123456, 123457, 2567891)
3. 生成的字符串不能是等差数列
4. 要求算法高效,少占内存。
我是没什么好办法。大概三步走
第一步
生成随机数
一次生成64位的数,再做随机长度分割。
第二步
每个字符串从头到尾遍历,检查是否有三个连续数字一致,同时也检查是否有连续3个连号。
若有则该数失败。
第三步
依次遍历,判断等差数列
抛转引玉,有没有更高效的办法来解这个题?!

生成随机数 (由0~9的阿拉伯数字组成的,长度是6~15个字符)
要求
1. 不能出现连续3个以上相同的数字(11234,2333456 是不允许的)
2. 不能出现3个连号的情况( 123456, 123457, 2567891)
3. 生成的字符串不能是等差数列
4. 要求算法高效,少占内存。
我是没什么好办法。大概三步走
第一步
生成随机数
一次生成64位的数,再做随机长度分割。
第二步
每个字符串从头到尾遍历,检查是否有三个连续数字一致,同时也检查是否有连续3个连号。
若有则该数失败。
第三步
依次遍历,判断等差数列
抛转引玉,有没有更高效的办法来解这个题?!
...全文
相关推荐
C语言生成真正随机数的一个例子
C语言生成真正随机数,可设定均匀分布随机数的区间
产生随机数的一个小程序
如题目所示,就是随机生成一个随机数,写得很简单,当然算法有很多种。
C语言在某一个范围内的随机数
今天试验了C语言在某一个范围内的随机数,希望能对某些人有些帮助
详解Python利用random生成一个列表内的随机数
主要介绍了详解Python利用random生成一个列表内的随机数,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
python在一个范围内取随机数的简单实例
python在一个范围内取随机数的方法: 可以利用random.uniform()函数来实现。 random.uniform()函数用于生成一个指定范围内的随机浮点数,如:【random.uniform(10, 20)】。 random.randint(a, b),用于生成一个指定范围内的整数。其中参数a是下限,参数b是上限,生成的随机数n: a <= n <= b。 代码示例: print random.randint(12, 20) # 生成的随机数 n: 12 <= n <= 20 print random.randint(20, 20) # 结果永远是20 # prin


其它技术问题
