我有一个函数,它有一个随机的方面。该函数获取一个包含10个整数的数组,并根据数组中的非零整数数量随机更改其值
我的函数按照我的要求工作,每当我正常运行它时,它都会提供不同的输出
但是,我希望在循环中运行函数并存储所有随机输出。当我尝试这样做时,我所有的输出结果都是一样的。我不知道为什么这是因为函数在循环之外工作
如何让函数为循环的每次迭代返回不同的值,以便存储它们
如果需要,我的功能代码如下(如果不干净,请抱歉):
def stochastic(array):
count = np.count_nonzero(array)
n = 0
m = 0
p = 0
q = 0
r = 0
counter = 0
if count == 3:
while n+m+p != 100:
n = random.randint(28,36)
m = random.randint(28,36)
p = 100 - (n+m)
if count == 4:
while n+m+p+q != 100:
n = random.randint(20,41)
m = random.randint(20,41)
p = random.randint(20,41)
q = 100 - (n+m+p)
if count == 5:
while n+m+p+q+r != 100:
n = random.randint(5,41)
m = random.randint(5,41)
p = random.randint(5,41)
q = random.randint(5,41)
r = 100 - (n+m+p+r)
for j in range(len(array)):
if array[j] != 0:
counter += 1
if counter == 1:
array[j] = n
elif counter == 2:
array[j] = m
elif counter == 3:
array[j] = p
elif counter == 4:
array[j] == q
elif counter == 5:
array[j] == r
if count == counter:
counter = 0
return array
print(stochastic(my2))
my1 = [33,33,34,0,0,0,0,0,0,0]
store = []
for i in range(1000):
store.append(stochastic(my1))
编辑:很抱歉,我意识到我的功能太糟糕了,而且有很多重复
我更改了我的函数以消除代码的重复(我还添加了一个计数器==5)
我还添加了我的循环
我得到的错误是,当我打印存储变量时,其中的每个元素都是相同的
每次都显示相同的列表实例
您应该每次复制列表,然后
store
将填充不同的数据我认为这是循环条件的问题。不确定,因为没有MRE,我无法轻松测试它
但是如果Q=100-N-M-p,那么Q+N+M+p不总是等于100吗
相关问题 更多 >
编程相关推荐