如标题所述,从两个范围或更准确地说是100个随机唯一值,存在一个范围和一个子范围被排除在有效值之外。
示例的范围是0到10000,随机的100个数字不在10到20的范围内
要求:
我知道random.sample(xrange(0,10000),100)给出100个唯一值。
设置我将存储三个值[开始,结束,总计]
最好的我能拿出:
randlist=[]
while len(randlist)<100:
temp=random.randint(0,total)
if temp < start or temp > end:
if temp not in randlist:
randlist.append(temp)
这是真正的随机(伪随机)还是我有任何影响?
randlist = [r + (end - start + 1) * (r >= start) for r in
random.sample(range(total - end + start), 100)]
示例/“证明”:
演示:
>>> sorted(randlist2(2000000000, 10000000, 1900000000))
[176827, 3235435, 3278133, 3673989, 5148447, 8314140, 8885997, 1900189345, 1902880599,
...
1997494057, 1997538971, 1997854443, 1997907285]
它可以工作到超过20亿,轻松超过“维基百科英语维基百科页面的数量,无论是多少百万”的必要上限:-)。之后它得到OverflowError: Python int too large to convert to C ssize_t
。我没有看到我的PC的内存使用高峰,结果是即时的。显然,这是使用Python 3的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句