Flutter(Dart)如何生成包含1的随机双精度浮点数?
让Dart的Random.nextDouble()取值范围包含1的解决方案
Dart内置的Random.nextDouble()默认返回**[0, 1)区间的浮点数,无法取到1。要让取值范围变为[0, 1]**,可以通过先生成整数再转换为小数的方式实现:
实现思路
生成一个从0到10000的整数(共10001个可能值),对应映射到0.0000到1.0000的小数:
- 当整数为10000时,直接返回1.0
- 其他整数则格式化为
0.xxxx的字符串后转成浮点数
代码实现
double getRandomDouble(){ final random = Random(); int a = random.nextInt(10001); // 生成0到10000的整数 String stringValue; if (a == 10000) { stringValue = '1.0'; } else { stringValue = '0.$a'; } return double.parse(stringValue); }
这样生成的随机数会均匀覆盖从0.0到1.0的区间,包含1这个端点。
内容的提问来源于stack exchange,提问作者Nikita Shadkov
相关产品推荐
相关产品推荐

