如何使用Dart生成随机数?
当前回答
如果你需要加密安全的随机数(例如加密),并且你在浏览器中,你可以使用DOM加密API:
int random() {
final ary = new Int32Array(1);
window.crypto.getRandomValues(ary);
return ary[0];
}
这适用于Dartium、Chrome和Firefox,但可能不适用于其他浏览器,因为这是一个实验性的API。
其他回答
对我来说,最简单的方法是:
import 'dart:math';
Random rnd = new Random();
r = min + rnd.nextInt(max - min);
//where min and max should be specified.
感谢@adam-singer的解释。
你可以通过在dart:math库中的随机类对象Random . nextint (max)来实现它。nextInt()方法需要一个最大限制。随机数从0开始,最大限制本身是排他的。
import 'dart:math';
Random random = new Random();
int randomNumber = random.nextInt(100); // from 0 upto 99 included
如果要添加最小限制,请将最小限制添加到结果中
int randomNumber = random.nextInt(90) + 10; // from 10 upto 99 included
让我用一个实际的例子来回答这个问题,这个例子是一个简单的骰子滚动应用程序,当点击时,它会在屏幕上随机调用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,
),
)
),
每次点击屏幕时,都会生成一个新的随机数,并引用该数字来选择所选择的骰子面部图像。
骰子滚动应用程序使用随机数在镖
一行解决方案,您可以直接调用所有函数的构造函数以及。
import 'dart:math';
print(Random().nextInt(100));
使用dart:math中的随机类:
import 'dart:math';
main() {
var rng = Random();
for (var i = 0; i < 10; i++) {
print(rng.nextInt(100));
}
}
在撰写本文时,这段代码已经使用Dart VM和dart2js进行了测试。
推荐文章
- 在Flutter中向有状态小部件传递数据
- 如何在c++中生成一个随机数?
- 未处理异常:ServicesBinding.defaultBinaryMessenger在绑定初始化之前被访问
- 颤振-换行文本
- 如何在Dart中四舍五入到小数点后的给定精度程度?
- 添加一个启动屏幕颤振应用程序
- 在flutter中等同于wrap_content和match_parent ?
- 随机行选择在熊猫数据框架
- 多行文本字段在扑动
- 在Dart中命名参数和位置参数之间有什么区别?
- 如何用Dart将字符串解析为数字?
- 如何在颤振的一些延迟后运行代码?
- 从文件中读取随机行有什么简单的方法?
- 在构建过程中调用setState()或markNeedsBuild
- 我如何添加阴影的小部件颤振?