如何在Dart中生成随机数?

Set*_*add 79 random dart

如何使用Dart生成随机数?

Set*_*add 108

使用Random来自的课程dart:math:

import 'dart:math';

main() {
  var rng = new Random();
  for (var i = 0; i < 10; i++) {
    print(rng.nextInt(100));
  }
}
Run Code Online (Sandbox Code Playgroud)

截至撰写本文时,此代码已使用Dart VM和dart2js进行了测试.

  • @just_a_dude听起来像是stackoverflow的完美问题。考虑创建一个新问题:) (2认同)
  • 生成例如 -0.8 到 0.9 的方法很简单。您只需要映射值。你的范围是 0.8+0.9= 1,7。因此,如果输入 rng.nextInt(1700),您将得到 0 到 1700 之间的数字。除以 100 并减少 -0,8。含义 yourRnd = rng.nextInt(1700)/100.0-0.8。您可以使用更多选项,例如甚至不使用 nextInt 而是使用双倍 0-1,乘以 1,7 并移位 -0.8 (2认同)
  • `new Random.secure()` 用于 dart 1.1.4 中的加密强随机数 (2认同)

Sam*_*imy 92

您可以通过实现它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
Run Code Online (Sandbox Code Playgroud)

如果要添加最小限制,请将最小限制添加到结果中

int randomNumber = random.nextInt(90) + 10; // from 10 upto 99 included
Run Code Online (Sandbox Code Playgroud)


Aym*_*oub 18

试试这个,你可以控制最小值/最大值:

import 'dart:math';

void main(){
  random(min, max){
    var rn = new Random();
    return min + rn.nextInt(max - min);
  }
  print(random(5,20)); // Output : 19, 6, 15..
}
Run Code Online (Sandbox Code Playgroud)


Sam*_*all 14

如果您需要加密安全的随机数(例如加密),并且您在浏览器中,则可以使用DOM加密API:

int random() {
  final ary = new Int32Array(1);
  window.crypto.getRandomValues(ary);
  return ary[0];
}
Run Code Online (Sandbox Code Playgroud)

这适用于Dartium,Chrome和Firefox,但可能不适用于其他浏览器,因为这是一个实验性API.


Mar*_*ase 12

这是一个用于生成随机数列表的代码段

import 'dart:math';

main() {
  var rng = new Random();
  var l = new List.generate(12, (_) => rng.nextInt(100));
}
Run Code Online (Sandbox Code Playgroud)

这将生成从0到99(包括)的12个整数的列表.


D V*_*esh 8

它对我有用 new Random().nextInt(100); // MAX = number

它将给出 0 到 99 的随机数

示例::

import 'dart:math';
int MAX = 100;
print(new Random().nextInt(MAX));`
Run Code Online (Sandbox Code Playgroud)


小智 7

无法发表评论,因为我刚刚创建了这个帐户,但我想确保指出 @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
Run Code Online (Sandbox Code Playgroud)


Gün*_*uer 6

安全随机API刚刚添加到 dart:math

new Random.secure()
Run Code Online (Sandbox Code Playgroud)

dart:math Random添加了一个secure构造函数,该构造函数返回一个加密安全的随机生成器,该生成器从嵌入器提供的熵源中读取每个生成的随机值。

window.crypto.getRandomValues()在浏览器和操作系统(例如urandom在服务器上)中委派给的对象


Nzu*_*uzo 6

让我用一个简单的骰子滚动应用程序的形式来解决这个问题,该应用程序在点击时将 6 个骰子面部图像中的 1 个随机调用到屏幕上。

首先声明一个生成随机数的变量(不要忘记导入 dart.math)。然后声明一个变量,该变量将 1 到 6 之间的约束内的初始随机数解析为整数。

这两个变量都是静态私有的,以便初始化一次。这不是什么大问题,但如果您必须初始化一大堆随机数,这将是一个很好的做法。

static var _random = new Random();
static var _diceface = _random.nextInt(6) +1 ;
Run Code Online (Sandbox Code Playgroud)

现在创建一个带有 ClipRRect 子项的手势检测小部件,以在点击时将六个骰子面图像之一返回到屏幕。

GestureDetector(
          onTap: () {
            setState(() {
              _diceface = _rnd.nextInt(6) +1 ;
            });
          },
          child: ClipRRect(
            clipBehavior: Clip.hardEdge,
            borderRadius: BorderRadius.circular(100.8),
              child: Image(
                image: AssetImage('images/diceface$_diceface.png'),
                fit: BoxFit.cover,
              ),
          )
        ),
Run Code Online (Sandbox Code Playgroud)

每次点击屏幕时都会生成一个新的随机数,并参考该数字来选择选择哪个骰子面图像。

我希望这个例子有帮助:)

在 dart 中使用随机数的骰子滚动应用程序


mis*_*eef 6

您可以通过简单地以这种方式生成一个名为 Random() 的类;

你可以使用它并生成随机数

Random objectname = Random();
int number = objectname.nextInt(100);
// it will generate random number within 100.
Run Code Online (Sandbox Code Playgroud)