【问题标题】:Generate random ranges生成随机范围
【发布时间】:2014-07-07 04:08:29
【问题描述】:

我想生成两个数字之间具有特定大小范围的随机范围。首先我认为随机模块中可能有一些特定的功能可以做到这一点,但似乎没有这样的功能。

我写了以下代码,但是速度很慢。

import random
range_list=[]
n=0
while n<1000000:
     first=random.randint(1,3000000000)
     last=random.randint(1,3000000000)
     if abs(last-first) <150 and abs(last-first)>100:
         range_list.append([last,first])
     else:
         continue
     n+=1

有什么快速的方法吗?

【问题讨论】:

  • 产生两个介于 0 和 50 之间的随机数,将 (100 + 一个随机数) 添加到两者。没有?
  • 将随机数加在一起并不总是一个好主意。您可能会破坏产生的随机性的“质量”。看看stackoverflow.com/a/3956538/525169,它很好地解释了这一点。也就是说,在这种特殊情况下,由于一个随机数的分布非常广泛,而另一个随机数的分布非常窄,卷积后的分布也可能非常平坦——如果这是预期的话。

标签: python-3.x random


【解决方案1】:

我发现很难编写一个值与您正在使用的程序一样高的快速程序。但我会这样:

import random
range_list=[]

for n in range(1000000):
    first=random.randint(0,3000000000)
    last=random.randint(first+101,first+149)
    range_list.append([last,first])

因为你想要 (last-first)100 你可以使用 last=random.randint(first+101,first+149) 然后你就不需要使用 "if " 因为条件已经为真

【讨论】:

    猜你喜欢
    • 2010-12-24
    • 1970-01-01
    • 1970-01-01
    • 2013-05-05
    • 2011-03-01
    • 2016-05-04
    • 2010-11-26
    相关资源
    最近更新 更多