在EiffelStudio中用BASE库RANDOM类模拟掷骰始终输出5的问题
问题分析与修复
你的代码始终输出5的核心问题是错误使用了RANDOM类的next_random方法,具体问题和修复方案如下:
问题根源
random_obj.next_random (random_obj.item):next_random(n)的参数n是随机数的上限,会生成0到n-1之间的整数,但你传入了刚初始化的random_obj.item——这个初始值是固定的,导致每次计算得到的数值完全一致。- 后续
\ 6 +1的计算基于这个固定值,最终只会输出固定结果5。
修复后的代码
class APPLICATION create make feature make local random_obj: RANDOM do create random_obj.make_from_system_time -- 用系统时间初始化种子,避免重复随机序列 io.put_integer (random_obj.next_random (6) + 1) -- 生成0-5的随机数,+1后得到1-6的骰子范围 end end
关键说明
next_random(6):直接传入上限6,生成0到5的随机整数,加1后正好匹配骰子1-6的结果范围。make_from_system_time:替代默认的make,用系统时间作为随机种子,确保每次运行程序能得到不同的随机序列,而非固定结果。
内容的提问来源于stack exchange,提问作者Dirtjersey6
相关产品推荐
相关产品推荐

