Python 从每个变量的给定范围创建N组变量组合

Python 从每个变量的给定范围创建N组变量组合,python,list,simulation,montecarlo,Python,List,Simulation,Montecarlo,这可能是一个非常模糊的问题-我提前道歉 y是a,b,c,d,e的函数。 a可以从1到130;b从0.5到1;c从3到10;d从0到1;e是1-d python中有没有一种方法可以从给定的范围创建10000组a、b、c、d和e的组合?itertools是创建类似迭代器的一个很好的库。在你的情况下,这是我们需要的产品。但是,不能设置所需的点数。你必须从数学上推导出它,并将其转化为范围函数末尾的步骤1 a = [i for i in range(1, 131, 1)] b = [i/10 for i

这可能是一个非常模糊的问题-我提前道歉

y是a,b,c,d,e的函数。 a可以从1到130;b从0.5到1;c从3到10;d从0到1;e是1-d

python中有没有一种方法可以从给定的范围创建10000组a、b、c、d和e的组合?

itertools是创建类似迭代器的一个很好的库。在你的情况下,这是我们需要的产品。但是,不能设置所需的点数。你必须从数学上推导出它,并将其转化为范围函数末尾的步骤1

a = [i for i in range(1, 131, 1)]
b = [i/10 for i in range(5, 11,1)]
c = [i for i in range(3, 11, 1)]
d = [i/10 for i in range(0, 11, 1)]

from itertools import product

combs = product(a, b, c, d)
for i, x in enumerate(combs, 1):
    x = list(x)
    x.append(1-x[-1])
    print(i, x)  # example print: 52076 [99, 0.8, 9, 0.1, 0.9]
上面的示例生成:130*6*8*11=68640个组合

这些比你要求的要多,但你明白了。您还可以决定对变量进行更精细的离散化


我还假设a&c是整数变量。

我假设所有这些都需要浮点数。如果需要整数,请使用random.randint


a&c的类型?看看itertools。你能提供一些输入和输出的例子吗?很多问题都没有回答:你想要随机组合还是10000个值?还有,1-130是实数还是整数域?所有数字都是浮点数。我在寻找随机组合,但我也可以使用正交抽样。e取决于d的传递值——你不应该事先计算它。捕捉得好。谢谢你。这个修正实际上破坏了效率,因为迭代器会生成无法编辑的元组。这太棒了。非常感谢您的帮助@Ev.Kounis。
from random import uniform

inputs = [[uniform(1,130), uniform(.5, 1), uniform(3,10), uniform(0,1)] for _ in range(N)]

for input_list in inputs:
    input_list.append(1-input_list[-1])
    a(*input_list)