编写生成M个长度为N的正态分布样本的rangNM函数遇语法错误求原因
代码错误原因及修复方案
错误点梳理
- 第2行
iseed == 0:==是相等判断运算符,此处需要给iseed赋初始值,应改为赋值运算符=。 - 第4行
for iseed < M:Python的for循环仅支持遍历可迭代对象,不能直接跟条件判断语句,此处需要按条件循环应改用while关键字,或是直接基于range(M)实现for循环遍历。 - 额外补充:你的代码中调用了
np开头的numpy方法,需要先导入numpy库,否则运行会报名称错误。
修复后可运行代码
方案1:保留原有逻辑修改
import numpy as np def rangNM(N, M): iseed = 0 sample = [] while iseed < M: np.random.seed(iseed) sample.append(np.random.normal(scale=1, loc=0, size=N)) iseed += 1 return sample rangNM(10, 5)
方案2:更简洁的for循环实现(无需手动维护计数变量)
import numpy as np def rangNM(N, M): sample = [] for iseed in range(M): np.random.seed(iseed) sample.append(np.random.normal(scale=1, loc=0, size=N)) return sample rangNM(10, 5)
内容的提问来源于stack exchange,提问作者RichardP Feynman
相关产品推荐
相关产品推荐

