不使用列表等数据结构,如何求n个随机数的最大值、最小值和平均值
不使用数据结构统计随机数最值的实现思路
你计算平均值时用到的「边生成随机数边做累计计算」的逻辑,完全可以复用在最值统计上,全程不需要存储所有随机数,具体实现思路如下:
- 循环生成随机数前,新增两个变量用于记录当前的最值:
current_max初始化为随机数区间的最小值1,current_min初始化为随机数区间的最大值100;如果担心初始化边界不符合特殊场景,也可以在生成第一个随机数时,直接将其同时赋值给current_max和current_min,从第二个随机数开始再做比较判断。 - 每次生成新的随机数时,在原有的平均值累加逻辑之外,新增两次比较:
- 若当前随机数大于
current_max,将current_max更新为当前随机数的值 - 若当前随机数小于
current_min,将current_min更新为当前随机数的值
- 若当前随机数大于
- 所有随机数生成完成后,
current_max就是全局最大值,current_min就是全局最小值,和已经计算完成的平均值一同输出即可。
参考伪代码如下:
# 读取正整数n的逻辑你已经实现 sum_total = 0 current_max = 1 current_min = 100 for _ in range(n): # 生成1-100随机数的逻辑你已经实现 cur_rand = get_random(1,100) sum_total += cur_rand # 新增最值判断 if cur_rand > current_max: current_max = cur_rand if cur_rand < current_min: current_min = cur_rand avg = sum_total / n print(f"平均值:{avg} 最大值:{current_max} 最小值:{current_min}")
内容的提问来源于stack exchange,提问作者Seif Alamir Yousef
相关产品推荐
相关产品推荐

