我想生成一个随机的六位数字。我尝试使用Random
类,但是new Random().nextInt(999999)
生成了一些少于六位数的数字。
答案 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