如何从飞镖范围中获取随机数?

时间:2012-11-10 01:05:25

标签: dart

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

9 个答案:

答案 0 :(得分:19)

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);

答案 1 :(得分:6)

范围可以通过以下简单公式找到

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");

答案 2 :(得分:2)

这确实很晚,但是对于仍然有问题的任何人。

获取最小值和最大值之间的随机数的最简单方法是:

import 'dart:math';

int max = 10;

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

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

答案 3 :(得分:1)

要生成一定范围内的随机双精度数,请将随机整数与随机双精度数相乘。

>>> def hello():
...     print 'hello: '+name
...
>>> hello()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 2, in hello
NameError: global name 'name' is not defined
>>> exec hello.func_code in {'name':'bob'}
hello: bob
>>>

答案 4 :(得分:0)

您可以通过Random类对象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(100) + 10; // from 10 upto 99 included

答案 5 :(得分:0)

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");

答案 6 :(得分:0)

生成均匀分布在 范围从[min]到[max](包括两个端点)。

int nextInt(int min, int max) => min + _random.nextInt((max + 1) - min);

答案 7 :(得分:0)

可以通过在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。有关详细讨论,请read here

答案 8 :(得分:-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