python - 随机函数在循环中每次生成相同的值
问题描述
我有一个具有随机方面的功能。该函数采用一个包含 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 案例)。
我还添加了我的循环。
我得到的错误是当我打印存储变量时,其中的每个元素都是相同的。
解决方案
您每次都呈现相同的列表实例。
my1 = [33,33,34,0,0,0,0,0,0,0]
store = []
for i in range(1000):
store.append(stochastic(my1[:]))
您应该每次复制列表,然后store
将填充不同的数据。
推荐阅读
- azure-cosmosdb - 如何删除 Azure Cosmos DB 视图中的列?
- python - Is there a way to quickly get rid of a lot of excess data with regex searches?
- logstash - 即使文件没有更改,也重新加载logstash配置文件
- android - 带有 EditText 的自定义 ListView 的问题
- javascript - three.js animations are frozen
- java - IBM MQ call failed with compcode '2' ('MQCC_FAILED') reason '2035' ('MQRC_NOT_AUTHORIZED')
- angularjs - 如何在 AngularJS 中使用 if else
- excel - Excel UserForm 动态 TextBox 控件退出事件
- python-3.x - 内核似乎已经死了。它将自动重新启动。有记忆问题?
- java - Multiple viewports in javafx application