如何生成6位随机数

时间:2018-06-26 13:03:30

标签: dart flutter

我想生成一个随机的六位数字。我尝试使用Random类,但是new Random().nextInt(999999)生成了一些少于六位数的数字。

9 个答案:

答案 0 :(得分:4)

因此,您只希望数字100000到(包括)999999。

您可以获取此范围内的随机数(900000),然后将100000添加到所获得的随机数中:

var rng = new Random();
var code = rng.nextInt(900000) + 100000;

这将始终为您提供6位数字的随机数。

答案 1 :(得分:4)

您还可以生成6个不同的数字,然后将它们连接为一个字符串,并根据需要将其转换为整数

import 'dart:math';
main(){
  var rndnumber="";
  var rnd= new Random();
  for (var i = 0; i < 6; i++) {
  rndnumber = rndnumber + rnd.nextInt(9).toString();
  }
  print(rndnumber);
}

答案 2 :(得分:1)

void main() {
  var rnd = new math.Random();
  var next = rnd.nextDouble() * 1000000;
  while (next < 100000) {
    next *= 10;
  }
  print(next.toInt());
}

答案 3 :(得分:1)

这里是Dart扩展方法,它将生成具有指定位数的非负随机整数:

extension RandomOfDigits on Random {
  /// Generates a non-negative random integer with a specified number of digits.
  ///
  /// Supports [digitCount] values between 1 and 9 inclusive.
  int nextIntOfDigits(int digitCount) {
    assert(1 <= digitCount && digitCount <= 9);
    int min = digitCount == 1 ? 0 : pow(10, digitCount - 1);
    int max = pow(10, digitCount);
    return min + nextInt(max - min);
  }
}

在您的情况下,请像这样使用它:

final random = Random();
print(random.nextIntOfDigits(6));

答案 4 :(得分:0)

以下类将生成具有'n'位数字的整数,或具有'n'位数字的字符串。

数字方法会更快,但位数有限。

import 'dart:math';

class RandomDigits {
  static const MaxNumericDigits = 17;
  static final _random = Random();

  static int getInteger(int digitCount) {
    if (digitCount > MaxNumericDigits || digitCount < 1) throw new RangeError.range(0, 1, MaxNumericDigits, "Digit Count");
    var digit = _random.nextInt(9) + 1;  // first digit must not be a zero
    int n = digit;

    for (var i = 0; i < digitCount - 1; i++) {
      digit = _random.nextInt(10);
      n *= 10;
      n += digit;
    }
    return n;
  }

  static String getString(int digitCount) {
    String s = "";
    for (var i = 0; i < digitCount; i++) {
      s += _random.nextInt(10).toString();
    }
    return s;
  }
}

void main() {
    print(RandomDigits.getInteger(6));
    print(RandomDigits.getString(36));
}

输出:

995723

198815207332880163668637448423456900

答案 5 :(得分:0)

我遇到了同样的问题。虽然有 3-4 种方法可以解决它,但我发现以下一种简单且分类。 只需检查长度匹配的数量。找到下面的代码

Integer otp = new Random().nextInt(999999);
int noOfOtpDigit=6;
  while(Integer.toString(otp).length()!=noOfOtpDigit) {
  otp = new Random().nextInt(999999);
 }
String otpString = String.valueOf(otp);

答案 6 :(得分:0)

m1 = pd.DataFrame(df["DIVAMT"])
m1["DIVAMT_shift"] = m1["DIVAMT"].shift()
cond = [(m1["DIVAMT"] >= m1["DIVAMT_shift"]) & (m1["DIVAMT"] > 0)]
val = [False]
m1["g1_bool"] = np.select(cond, val, True)
m1["g1"] = m1["g1_bool"].cumsum()
dividend_year["no_cut"] = m1["DIVAMT"].groupby([df["PERMNO"], m1["g1"]]).cumcount()

答案 7 :(得分:0)

这是您无限供应的六位数随机数

String getRandomNumber(){
    final r = Random();
    return List<int>.generate(6, (index) => r.nextInt(10)).fold<String>("", (prev, i) => prev += i.toString());
}

答案 8 :(得分:0)

如果你想得到 0 到 999999 之间的 6 位数值,如果数字小于 6 位,你可以添加前导 0。

String r = Random().nextInt(999999).toString().padLeft(6, '0');
// example output: 025328