You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Dart编写生成非零随机数的for循环仍输出0的问题求助

代码错误原因
  • Random.nextInt(int max) 方法的返回值范围为 0 ≤ 结果 < max,天生包含0:你循环第一次执行时i=1,nextInt(1) 只能返回0;最后一次循环i=6,nextInt(6) 的返回值范围是0-5,依然包含0,自然会拿到0结果。
  • 你在循环内反复实例化Random对象属于多余操作,重复初始化会降低随机数的分布均匀性,全局初始化一次即可。
  • 整个for循环逻辑无效:循环过程中前面的赋值结果都会被最后一次的结果覆盖,你最终拿到的永远是i=6那次的随机数结果,前面的循环完全没有作用。
  • 代码中的打印语句存在拼写错误,Randon 应为 Random。
正确实现方式

如果你要生成1-6之间的非零随机数,最简单的写法是直接给随机结果加1,跳过0值:

import 'dart:math';

void main() {
  final _random = Random();
  // nextInt(6)返回0-5,加1后范围变为1-6,自然排除0
  int num = _random.nextInt(6) + 1;
  print('Random num is $num');
}

如果是要适配更通用的、排除0的随机数生成场景,可以用do-while循环判断,生成0就重新取值:

import 'dart:math';

void main() {
  final _random = Random();
  int num;
  do {
    num = _random.nextInt(6);
  } while(num == 0);
  print('Random num is $num');
}

内容的提问来源于stack exchange,提问作者abhijeet

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 03:54:02