想要用随机生成的数组去穷尽所有可能还是不太现实,长度为n的数列,一共就有2^n种可能,我试了一下,如果是4个数,也就是16种情况,在1000次重复下,平均要随机生成53次才能全部生成全部可能,最多的要156次。若果有10个数生成1024种的话,我的电脑已经跑不动了,5个数512种的话平均3447次,最多的4976次。所以用随机的方式去生成所有情况是不现实的,肯定是穷举法比较现实。
import numpy as np
#生成系数矩阵
def func(n):
xs = {1:[[0],[1]]}
i = 1
while i
x_list = []
for x in xs[i]:
x_list.append(x + [0])
x_list.append(x + [1])
i+=1
xs[i] = x_list
return xs[n]
#输入任意数,给定k,输出求和结果
def main(input_list,k):
x = np.array(input_list)
n = len(input_list)
func_n = func(n)
func_T = np.array(func_n).T
result = np.dot(x,func_T)
for index,name in enumerate(result):
if name == k:
print(func_n[index]