生成6位随机数字

20

我只需要生成一个6位随机数,范围从000000到999999。

new Random().nextInt(999999) 能返回数字,但不是6位数。


4
不存在数字000000。该数字是0,在显示时可以用“000000”进行填充,但0000000是相同的数字。如果您想要6位数,您需要从100000999999的数字范围内选择。如果您需要一个6位数字的字符串,请像之前一样生成一个数字(请参见我对Karol的评论),然后通过填充到6位数字来转换为字符串。 - Amadan
所以你只是想生成100000到999999之间的数字吗? - GotoFinal
在显示时,数字是否必须显示为“000000”而不是“0”? - MGT
1
谢谢,我找到了解决方案。 - Kraken
RandomStringUtils.randomNumeric(6); - khizerbajwa
5个回答

60

就是这么简单,你可以使用你的代码,在这里只需多做一件事

String.format("%06d", number);
这将以字符串格式返回您的数字,因此"0"将变成"000000"。
以下是代码。
public static String getRandomNumberString() {
    // It will generate 6 digit random Number.
    // from 0 to 999999
    Random rnd = new Random();
    int number = rnd.nextInt(999999);

    // this will convert any number sequence into 6 character.
    return String.format("%06d", number);
}

2
还有一件事,在数字中你无法得到“000000”,它只会是“0”,这就是为什么我在这里返回字符串的原因。 - Dev Sabby
1
我明白了,很好。 - Kraken
这段代码不起作用。有时我会得到超过6位数的结果。 - Suthanth DK
rnd.nextInt(999999); 这将生成一个小于“999999”的随机数,它将始终低于6位数字,然后将通过String.format("%06d", number); 转换为固定的6位数字。因此,你所说的是不可能的。 - Dev Sabby

17

如果您需要一个六位数字,它必须以100000开头

int i = new Random().nextInt(900000) + 100000;

前导零不会产生影响,0000000相同。如果您使用的是Java 7+,可以使用ThreadLocalRandom进一步简化:

int i = ThreadLocalRandom.current().nextInt(100000, 1000000)

2
899999 -> 900000,因为 nextInt 确保生成的数字小于它的参数。 - Amadan
1
第二个语句应该是ThreadLocalRandom.current().nextInt(100000, 1000000),以覆盖最多6位数字,最高达999999。 - ktk

1

1 + nextInt(2) 总是会得到 1 或 2。然后您将其乘以 10000 以满足您的要求,再加上一个介于 [0..9999] 的数字。

已解决 这里

public int gen() 
{ 
    Random r = new Random( System.currentTimeMillis() );
    return ((1 + r.nextInt(2)) * 10000 + r.nextInt(10000)); 
}

public int gen() { Random r = new Random( System.currentTimeMillis() ); return ((1 + r.nextInt(2)) * 10000 + r.nextInt(10000)); } - Codebender
您可以编辑您的答案,以包含上述评论中的代码块等其他信息。 - L.Spillner

0
我知道这很困难,但你可以做类似于以下的事情: 创建一个名为BinaryNumber的类; 创建一个构造函数,生成一个由6个字符组成的char[],其中每个字符都是使用0到1的随机数生成的 重写toStrig()方法,以便在需要显示时将数字char[]作为字符串返回。然后创建一个toInt()方法,通过for循环逐个检查字符串中的字符,并通过将当前数字乘以10的i次方来将其转换为十进制基数数字:
char[] digits = {‘1’ , ‘0’ , ‘1’ , ‘1’ , ‘0’ , ‘1’};
//random 

int result = 0;
for( int i = 0; i < digits.length; i++) {
    result += Integer.parseInt(digits[i]) * Math.pow(10, i);
}

return result;

0

这是用Java编写的生成6位随机代码的代码。

import java.util.*;
public class HelloWorld{

     public static void main(String []args)
     {

        Random r=new Random();
                        HashSet<Integer> set= new HashSet<Integer>();
                        while(set.size()<1)
                        {
                            int ran=r.nextInt(99)+100000;
                            set.add(ran);
                        }
                        int len = 6;
                        String random=String.valueOf(len);
                        for(int  random1:set)
                        {
                            System.out.println(random1);
                            random=Integer.toString(random1);

                        }
     }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接