79

如何获得类似于 c# Random.Next(int min, int max); 范围内的随机数

4

9 回答 9

80
import 'dart:math';

final _random = new Random();

/**
 * Generates a positive random integer uniformly distributed on the range
 * from [min], inclusive, to [max], exclusive.
 */
int next(int min, int max) => min + _random.nextInt(max - min);
于 2012-11-10T01:16:50.683 回答
37

范围可以用一个简单的公式找到,如下所示

Random rnd;
int min = 5;
int max = 10;
rnd = new Random();
r = min + rnd.nextInt(max - min);
print("$r is in the range of $min and $max");
于 2012-11-10T01:08:34.847 回答
28

您可以通过Random类 object来实现它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
于 2019-12-10T19:33:34.503 回答
21

这真的很晚了,但这对于任何仍有疑问的人来说。

获得最小值和最大值之间的随机数的最简单方法如下:

import 'dart:math';

int max = 10;

int randomNumber = Random().nextInt(max) + 1;

dart 中的数学模块有一个名为 nextInt 的函数。这将返回一个从 0 (包括 0 )到 max - 1 (不包括 max )的整数。我想要一个 1 到 10 的数字,因此我将 1 添加到 nextInt 结果。

于 2020-08-24T20:26:23.453 回答
3

它可以完全按照您的意图通过创建扩展int来获得随机 int 值来实现。例如:

import 'dart:math';

import 'package:flutter/foundation.dart';

extension RandomInt on int {
  static int generate({int min = 0, @required int max}) {
    final _random = Random();
    return min + _random.nextInt(max - min);
  }
}

您可以像这样在代码中使用它:

List<int> rands = [];
for (int j = 0; j < 19; j++) {
  rands.add(RandomInt.generate(max: 50));
}

请注意,不能在类型本身(例如int.generate(min:10, max:20))上调用静态扩展方法,但在此示例中,您必须使用扩展名本身RandomInt。有关详细讨论,请阅读此处

于 2020-09-27T10:00:35.163 回答
2
import 'dart:math';

Random rnd = new Random();
// Define min and max value
int min = 1, max = 10;
//Getting range
int num = min + rnd.nextInt(max - min);
print("$num is in the range of $min and $max");
于 2020-04-27T15:50:25.867 回答
2

生成一个随机整数,均匀分布在从 [min] 到 [max] 的范围内,包括两者。

int nextInt(int min, int max) => min + _random.nextInt((max + 1) - min);
于 2020-08-18T06:43:05.050 回答
0

要在某个范围内生成随机双精度数,请将随机整数乘以随机双精度数。

import 'dart:math';
Random random = new Random();
int min = 1, max = 10;
double num = (min + random.nextInt(max - min)) * random.nextDouble();
于 2020-05-23T21:57:37.257 回答
-1

一个更简单的方法是在 Random 中使用 nextInt 方法:

// Random 50 to 100:
int min = 50;
int max = 100;
int selection = min + (Random(1).nextInt(max-min));

https://api.dartlang.org/stable/2.0.0/dart-math/Random-class.html

于 2018-10-05T13:12:38.380 回答