gpt4 book ai didi

python - 在实现约束的同时,是否有更有效的方法来暴力破解随机分布?

转载 作者:太空宇宙 更新时间:2023-11-03 17:02:40 25 4
gpt4 key购买 nike

我有一个函数,可以生成一组满足指定约束的混合物。我的代码:

def generate_mix():
while True:
n2 = np.random.uniform(0.0,1.15)
c2 = np.random.uniform(0.1,10.3)
c3 = np.random.uniform(0.02,2.66)
ic4 = np.random.uniform(0,0.71)
nc4 = np.random.uniform(0,0.71)
ic5 = np.random.uniform(0,0.04)
nc5 = np.random.uniform(0,0.01)

if (n2/c2 <= 0.3 and
0.20 >= c3/c2 <= 0.26 and
0.20 >= ic4/c3 <= 0.27 and
nc4/ic4 <= 1 and
ic5/nc4 <= 0.06 and
nc5/ic5 <= 0.25):

comp_list = [c2, c3, ic4, nc4, ic5, nc5, n2]
comp_list.insert(0, 100 - sum(comp_list))
return comp_list
break

big_list = [generate_mix() for _ in range(1000)]

该代码在我的计算机上运行大约需要 18 秒。我想知道这种 while 循环是否有更有效的方法? ..这是一种强制均匀分布的方式,这也许是为什么它需要这么长时间的原因。

如果没有的话我想我会忍受它。

重点是生成在 numpy 随机分布指定范围内的混合。这是我的申请所必须的。

最佳答案

因此,您想要做的是首先生成自变量,然后生成因变量,而不是生成所有变量,然后在不满足约束时再次生成。

所以我会这样做

def generate_mix():
c2 = np.random.uniform(0.1, 10.3)

那么由于 n2/c2 必须 <= 0.3

  n2 = np.random.uniform(0.0, max(1.15, .3/c2))

等等。

关于python - 在实现约束的同时,是否有更有效的方法来暴力破解随机分布?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34905128/

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