Python中lcg函数内部打印与返回值打印结果不一致的问题求助
问题原因与修复方案
你的lcg函数当前只返回循环最后一次计算的LCG值,所以赋值给tes5后只能得到最后一个结果3。而函数内部的print是在循环里每次输出当前值,所以能打印完整序列。
要获取完整的生成序列,需要把每次计算的结果存储起来,最后返回整个集合:
def lcg(n, m): a = 11 c = 5 dec = n m = m * 4 # 初始化列表存储所有生成的LCG值 result_list = [] for i in range(0, m): LCG = ((a * dec) + c) % m print(LCG, end=' ') result_list.append(LCG) # 将每次的结果加入列表 dec = LCG return result_list # 返回整个列表 tes5 = lcg(3, 4) print("\n") # 换行区分函数内的打印和后续输出 print(tes5) # 输出:[6, 7, 2, 11, 14, 15, 10, 3, 6, 7, 2, 11, 14, 15, 10, 3]
修改说明:
- 新增
result_list列表,用来保存循环中每一次生成的LCG值 - 循环内每次计算完
LCG后,用append把值加入列表 - 函数最后返回整个列表,而不是单个的
LCG变量 - 调用后
tes5就会存储完整的生成序列,打印时就能看到所有结果
内容的提问来源于stack exchange,提问作者HelpMe
相关产品推荐
相关产品推荐

