如何使用 Dart 生成随机数?
您可以通过
Random
类对象random.nextInt(max)
来实现它,它在dart:math
库中。 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
试试这个,你可以控制min/max值:
注意你需要导入飞镖数学库。
import 'dart:math';
void main() {
int random(int min, int max) {
return min + Random().nextInt(max - min);
}
print(random(5, 20)); // Output : 19, 5, 15.. (5 -> 19, 20 is not included)
}
这是生成随机数列表的片段
import 'dart:math';
main() {
var rng = new Random();
var l = new List.generate(12, (_) => rng.nextInt(100));
}
这将生成从 0 到 99(含)的 12 个整数的列表。
一个安全的随机 API 刚刚添加到
dart:math
new Random.secure()
dart:math
添加了一个Random
构造函数返回一个加密安全 从提供的熵源中读取的随机生成器 每个生成的随机值的嵌入器。secure
在浏览器中委托给
window.crypto.getRandomValues()
和操作系统(就像服务器上的urandom
)
如果你需要 cryptographically-secure 随机数(例如用于加密),并且你在浏览器中,你可以使用 DOM cryptography API:
int random() {
final ary = new Int32Array(1);
window.crypto.getRandomValues(ary);
return ary[0];
}
这适用于 Dartium、Chrome 和 Firefox,但可能不适用于其他浏览器,因为这是一个实验性 API。
让我用一个简单的掷骰子应用程序形式的实际示例来回答这个问题,该应用程序在点击时将 6 个骰子面部图像中的 1 个随机调用到屏幕上。
首先声明一个生成随机数的变量(不要忘记导入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,
),
)
),
每次点击屏幕时都会生成一个新的随机数,并参考该数字来选择选择哪个骰子脸图像。
对我有用
new Random().nextInt(100); // MAX = number
它会给出0到99的随机数
示例::
import 'dart:math';
int MAX = 100;
print(new Random().nextInt(MAX));`
无法发表评论,因为我刚刚创建了这个帐户,但我想确保指出 @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
您可以通过这种方式简单地生成 有一个名为 Random() 的类;
你可以使用它并生成随机数
Random objectname = Random();
int number = objectname.nextInt(100);
// it will generate random number within 100.
替代解决方案可以使用以下代码DRandom。此类应与种子一起使用。它为您在 .NET 中所期望的提供了一个熟悉的界面,它是从 mono 的 Random.cs 移植而来的。此代码可能不是加密安全的,并且尚未经过统计测试。
刚刚编写了这个用于生成 Normal 随机数的小类......这是我需要做的检查的一个不错的起点。 (这些套装将分布在一个“钟”形 曲线。)种子将随机设置,但如果你想重新生成一个集合,你可以只传递一些特定的种子,并且将生成相同的集合。
玩得开心...
class RandomNormal {
num _min, _max, _sum;
int _nEle, _seed, _hLim;
Random _random;
List _rNAr;
//getter
List get randomNumberAr => _rNAr;
num _randomN() {
int r0 = _random.nextInt(_hLim);
int r1 = _random.nextInt(_hLim);
int r2 = _random.nextInt(_hLim);
int r3 = _random.nextInt(_hLim);
num rslt = _min + (r0 + r1 + r2 + r3) / 4000.0; //Add the OS back in...
_sum += rslt; //#DEBUG ONLY
return( rslt );
}
RandomNormal(this._nEle, this._min, this._max, [this._seed = null]) {
if (_seed == null ) {
Random r = new Random();
_seed = r.nextInt(1000);
}
_hLim = (_max - _min).ceil() * 1000;
_random = new Random(_seed);
_rNAr = [];
_sum = 0;//#DEBUG ONLY
h2("RandomNormal with k: ${_nEle}, Seed: ${_seed}, Min: ${_min}, Max: ${_max}");//#DEBUG ONLY
for(int n = 0; n < _nEle; n++ ){
num randomN = _randomN();
//p("randomN = ${randomN}");
LIST_add( _rNAr, randomN );
}
h3("Mean = ${_sum/_nEle}");//#DEBUG ONLY
}
}
new RandomNormal(1000, 80, 120);
new RandomNormal(1000, 80, 120);
new RandomNormal(1000, 80, 120);
new RandomNormal(1000, 80, 120);
new RandomNormal(1000, 80, 120);
new RandomNormal(1000, 80, 120);
new RandomNormal(1000, 80, 120);
然后你可以像这样使用它来检查在下限和上限之间生成的 1000 个数字集的平均值。这些值存储在类中,因此可以在实例化后访问它们。
_swarmii
对我来说最简单的方法是:
import 'dart:math';
Random rnd = new Random();
r = min + rnd.nextInt(max - min);
//where min and max should be specified.
感谢@adam-singer 在这里的解释。
此方法生成随机整数。最小值和最大值都包括在内。
确保将此行添加到您的文件中:
import 'dart:math';
然后您可以添加并使用此方法:
int randomInt(int min, int max) {
return Random().nextInt(max - min + 1) + min;
}
所以如果你调用
randomInt(-10,10)
它将返回一个介于 -10 和 10 之间的数字(包括 -10 和 10)。
使用 Dart 生成器,用于生成数字或值的序列。
main(){
print("Sequence Number");
oddnum(10).forEach(print);
}
Iterable<int> oddnum(int num) sync*{
int k=num;
while(k>=0){
if(k%2==1){
yield k;
}
k--;
}
}
使用 'dart:math' 库中的 Random() 类。
import 'dart:math';
void main() {
int max = 10;
int RandomNumber = Random().nextInt(max);
print(RandomNumber);
}
这应该生成并打印一个从 0 到 9 的随机数。
一行解决方案,您也可以直接使用构造函数调用所有函数。
import 'dart:math';
print(Random().nextInt(100));
这对我有用
import 'dart:math';
void main() {
Random random = Random();
int randomNumber = random.nextInt(5) + 1;
print(randomNumber);
}
更改数字五以获得您想要的可能结果
生成随机双:
import 'dart:math';
print(Random().nextDouble());
• SQL Server 生成介于 -1 和 1 之间的随机数
• 如何在 flutter web 中添加广告(Google Adsense)
• 如何在Flutter项目中使用Dart 3 Alpha?
• 如何在 dart 中实现可在移动设备和 Web 上运行的 http 客户端?
• 如何在 JavaScript 中添加一个显示上升的“动画”数字?
• 如何为 MongoDB 聚合中的每个文档生成随机 ISO 日期?
• Flutter Dart - 从国家代码中获取本地化的国家名称
• 如何读取使用 --dart-define-from-file 传递的 .json 文件中定义的嵌套 JSON 键