Generate 6 digit random number
我只想生成6位数的随机数,范围应该从000000到999999开始。
new Random().nextInt(999999)正在返回我的号码,但它不是6位数。
-
没有000000这样的数字。 数字是0,可以在其显示表示中填充到"000000",但0与000000的数字相同。 如果您想要6位数字,则需要100000到999999范围内的数字。 如果你需要一个6位数字符串,生成一个几乎和你一样的数字(参见下面我对Karol的评论),然后通过填充到6位数字转换为字符串。
-
所以你只想生成100000到999999之间的数字?
-
显示时,数字是强制显示"000000"而不是"0"吗?
-
谢谢,我得到了解决方案。
就这么简单,你可以使用你的代码,只需在这里做一件事
1
| String. format("%06d", number ); |
这将以字符串格式返回您的号码,因此"0"将为"000000"。
这是代码。
1 2 3 4 5 6 7 8 9
| 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 );
} |
-
还有一件事,你不能得到"000000"作为数字,在数字上它只是"0",这就是我在这里返回字符串的原因。
-
我明白了,这很好。
如果您需要一个六位数字,则必须从100000开始
1
| int i = new Random(). nextInt(900000) + 100000; |
前导零没有效果,000000与0相同。如果您使用的是Java 7+,则可以使用ThreadLocalRandom进一步简化它:
1
| int i = ThreadLocalRandom.current().nextInt(100000, 1000000) |
-
899999 - > 900000,因为nextInt保证生成小于其参数的数字。
-
第二个语句应该是ThreadLocalRandom.current()。nextInt(100000,1000000),以覆盖最多6位数到999999。
这是java中生成6位随机码的代码。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| 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 );
}
}
} |
我知道这很困难,但你可以这样做:
为BinaryNumber创建一个类;
创建一个构造函数,生成一个6个字符的char [],其中每个单元都使用0到1的随机数生成
覆盖toStrig()方法,以便它可以将数字char []作为字符串返回,如果要显示它。然后创建一个方法toInt(),通过带有for的char对字符串char进行esamin,并通过将当前数字乘以10加到i的pow来将其转换为十进制基数:
1 2 3 4 5 6 7 8 9
| 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 ; |
1 + nextInt(2)应始终给出1或2.然后将其乘以10000以满足您的要求,然后在[0..9999]之间添加一个数字。
已经在这里解决了
1 2 3 4 5
| 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)); }
-
您可以编辑您的答案,以包含上述评论中的代码块等其他信息。