从每个变量的给定范围创建 N 组变量组合
Creating a N sets of combinations of variables from the given range of each variable
这可能是一个非常模糊的问题——我提前道歉。
y 是 a,b,c,d,e 的函数。
a 可以从 1 到 130; b 从 0.5 到 1; c 从 3 到 10; d 从 0 到 1; e 是 1-d。
有没有办法python我可以从给定的范围内创建 N(比如 10,000)组 a、b、c、d 和 e 的组合?
itertools
是一个很棒的库,用于创建这样的迭代器。在您的情况下,我们需要 product
。但是,您无法设置所需的点数。您将不得不从数学上推导出它并将其转化为步骤(range()
函数末尾的 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
是整数变量..
我假设您想要所有这些的浮点数。如果你想要 int
s 使用 random.randint
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)
这可能是一个非常模糊的问题——我提前道歉。
y 是 a,b,c,d,e 的函数。 a 可以从 1 到 130; b 从 0.5 到 1; c 从 3 到 10; d 从 0 到 1; e 是 1-d。
有没有办法python我可以从给定的范围内创建 N(比如 10,000)组 a、b、c、d 和 e 的组合?
itertools
是一个很棒的库,用于创建这样的迭代器。在您的情况下,我们需要 product
。但是,您无法设置所需的点数。您将不得不从数学上推导出它并将其转化为步骤(range()
函数末尾的 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
是整数变量..
我假设您想要所有这些的浮点数。如果你想要 int
s 使用 random.randint
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)