如何使用Dart生成随机数?
当前回答
它为我工作new Random().nextInt(100);// MAX = number
它会给出0到99的随机数
Eample::
import 'dart:math';
int MAX = 100;
print(new Random().nextInt(MAX));`
其他回答
该方法生成随机整数。最小值和最大值都包含在内。
确保你在文件中添加了这一行:import 'dart:math';然后你可以添加并使用这个方法:
int randomInt(int min, int max) {
return Random().nextInt(max - min + 1) + min;
}
因此,如果你调用randomInt(-10,10),它将返回一个介于-10和10之间的数字(包括-10和10)。
让我用一个实际的例子来回答这个问题,这个例子是一个简单的骰子滚动应用程序,当点击时,它会在屏幕上随机调用6个骰子面部图像中的一个。
首先声明一个生成随机数的变量(别忘了导入dart.math)。然后声明一个变量,将约束在1到6之间的初始随机数解析为Integer。
为了只初始化一次,两个变量都是静态私有的。这不是一个很大的问题,但如果你必须初始化一大堆随机数,这将是一个很好的实践。
static var _random = new Random();
static var _diceface = _random.nextInt(6) +1 ;
现在创建一个带有ClipRRect的手势检测小部件,以便在点击时将六个骰子面部图像中的一个返回到屏幕上。
GestureDetector(
onTap: () {
setState(() {
_diceface = _random.nextInt(6) +1 ;
});
},
child: ClipRRect(
clipBehavior: Clip.hardEdge,
borderRadius: BorderRadius.circular(100.8),
child: Image(
image: AssetImage('images/diceface$_diceface.png'),
fit: BoxFit.cover,
),
)
),
每次点击屏幕时,都会生成一个新的随机数,并引用该数字来选择所选择的骰子面部图像。
骰子滚动应用程序使用随机数在镖
另一种解决方案可以使用以下代码random。这个类应该与种子一起使用。它提供了一个熟悉的。net接口,它是从mono的Random.cs移植过来的。此代码可能不是加密安全的,并且没有经过统计测试。
如果你需要加密安全的随机数(例如加密),并且你在浏览器中,你可以使用DOM加密API:
int random() {
final ary = new Int32Array(1);
window.crypto.getRandomValues(ary);
return ary[0];
}
这适用于Dartium、Chrome和Firefox,但可能不适用于其他浏览器,因为这是一个实验性的API。
无法评论,因为我刚刚创建了这个帐户,但我想确保指出,@eggrobot78的解决方案是有效的,但它在dart中是独占的,所以它不包括最后一个数字。如果您将最后一行更改为“r = min + rnd.”nextInt(max - min + 1);”,那么它也应该包括最后一个数字。
解释:
max = 5;
min = 3;
Random rnd = new Random();
r = min + rnd.nextInt(max - min);
//max - min is 2
//nextInt is exclusive so nextInt will return 0 through 1
//3 is added so the line will give a number between 3 and 4
//if you add the "+ 1" then it will return a number between 3 and 5
推荐文章
- 如何在Dart中生成随机数?
- 创建可重用小部件的函数和类之间的区别是什么?
- 列举省略号中双点(.)的用法?
- 为什么rand() + rand()会产生负数?
- 颤振:如何防止设备方向变化和力画像?
- 将数据传递给StatefulWidget并在Flutter中访问它的状态
- Flutter doctor -android-licenses给出Java错误
- 随机浮点数生成
- 按屏幕宽/高百分比调整元素的大小
- 如何在颤振小部件(中心小部件)的子属性中使用条件语句
- 为什么人们说在使用随机数生成器时存在模偏置?
- 我如何提供一个初始值的文本字段?
- 如何在Unix命令行或shell脚本中打乱文本文件的行?
- Dart SDK未配置
- 更好的方式洗牌两个numpy数组一致