gpt4 book ai didi

python字典,分配随机值,其总和为某个值

转载 作者:太空宇宙 更新时间:2023-11-04 10:06:44 25 4
gpt4 key购买 nike

我正在制作一个 python 程序,其中生成 n 次随机值,用作模型模拟的参数值。

我有一个定义每个参数边界的字典,例如:

parameters = {'A': random.uniform(1,10), 'B': random.uniform(20,40)}

我想添加一些总和必须为 1 的参数,例如:

params = {'C1': random.uniform(0.0,1.0), 'C2': 1 - params['C1']}

后者显然无法产生 KeyError: 'C1'

我也尝试过类似的东西:

params = {'A': random.uniform(1,10), 'B': random.uniform(20,40), 'C': {'C1': None,'C2': None}}

def class_fractions():
for key in params['C']:
if key == 'C1':
params['C'][key] = random.uniform(0.0,1.0)
if key == 'C2':
params['C'][key] = 1.0 - params['C'][key]

但是在调用函数之后我得到了 TypeError

TypeError: 不支持的操作数类型 -: 'float' 和 'NoneType'

有什么建议吗?

最佳答案

您的代码的问题是因为 dict 在 Python 中没有排序。当你这样做时:

for key in params['C']

您获得的 C2 key 早于 C1。实际上,您甚至不需要迭代 dict 只需在字典中设置值,例如:

def class_fractions():
params['C']['C1'] = random.uniform(0.0,1.0)
params['C']['C2'] = 1.0 - params['C']['C1']

你甚至不需要单独的函数,因为它只更新同一个字典,你只需这样做:

params = {'A': random.uniform(1,10), 'B': random.uniform(20,40)} # create partial dict
c_dict = {'C1': random.uniform(1,10)} # create sub-dict to store random value
c_dict['C2'] = 1 - c_dict['C1'] # get value that you want
params['C'] = c_dict # add entry into parent dict

关于python字典,分配随机值,其总和为某个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40621472/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com