在n = range(1, n+1)
内,我必须随机生成n * p
个唯一整数的列表。
例如,如果n = 10
和p = 0.3
,那么可能的结果可能是:
[2, 6, 9]
[1, 5, 7]
[3, 4, 8]
[3, 5, 6]
etc
以下Python代码完美地完成了这项工作:
import random
n = 250000
p = 0.8
np = int(n * p)
result = []
for i in range(np):
attempt = random.randint(1, n)
if attempt not in result:
result.append(attempt)
但是,因为它是Python,np > 200000
可能需要很长时间(例如,超过一分钟)。
使用NumPy
?
答案 0 :(得分:6)
答案 1 :(得分:0)
使result
成为一个集合而不是列表将使您不必在每次迭代时遍历列表中的每个项目,以检查您要附加的新项目是否已存在。小改进,但你应该看到性能上的差异。