gpt4 book ai didi

python - 这会检测到是否违反了我的最小间距,但不会生成新列表

转载 作者:行者123 更新时间:2023-11-28 17:40:12 25 4
gpt4 key购买 nike

我需要生成 10 个随机数,其中任意两个之间的最小间距为 0.15。我正在尝试的是:

    r=[]
for i in range(0,10):
x=random.uniform(1,6)
r.insert(i,x)
print(r)
for j in range(0,9):
for k in range(0,j):
h=m[j]-m[k]
if h<0.15:
print(h)
else:
continue

上面的代码生成了 10 个随机数,然后当差值小于 0.15 时打印对之间的差值。这会检测到是否违反了我的最小间距,但不会生成新列表。

最佳答案

你错过了一个非常基本的东西,当它违反你的约束时你不会尝试重新创建列表。

与此相比,我更喜欢分解事物,Python 让它变得如此简单。我已将您的约束检查移到它自己的函数中。

def meets_constraints(m):
for j in range(0,9):
for k in range(0,j):
h=abs(m[j]-m[k])
if h<0.15:
print(h)
return False
return True

while True:
r=[]
for i in range(0,10):
x=random.uniform(1,6)
r.insert(i,x)
print(r)
if meets_constraints(r):
break

这会不断生成一个新列表,直到您获得一个所有元素至少相距 0.15 的列表。请注意,这是非常低效的,因为检查所有元素是一个 n^2 算法,并且您将继续执行测试一些随机次数,直到您遇到一个通过的序列。更好的算法会在您首先构建列表时保证约束。

附言我还在差异计算中添加了 abs,因为我认为这是您原始代码中的错误。

关于python - 这会检测到是否违反了我的最小间距,但不会生成新列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25387109/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com