⽣成六位随机数的⽅法
1. ⽤math.random()实现,⽐较⿇烦的⼀种⽅式,思路是:math.random()⽣成的是[0.0, 1.0)的伪随机数,如果当前值是,则直
接1000000返回,其他情况可能⽣成,,,这些情况都1000000,但是结果可能是6位,5位,4位都有可能,那么再加上100000,肯定就保证是6位了。
for (int i = 0; i <= 200; i++)
{
int intFlag = (int)(Math.random() * 1000000);
String flag = String.valueOf(intFlag);
if (flag.length() == 6 && flag.substring(0, 1).equals("9"))
{
System.out.println(intFlag);
}
else
{
intFlag = intFlag + 100000;
System.out.println(intFlag);
}
}
2. ⾯试可以⽤到的⼀种⽅式,⼀⾏代码实现,思路是:math.random()范围是[0.0, 1.0),那么math.random()9+1⼀定是⼩于10的,
(Math.random()9+1)100000⼀定是<10100000=1000000的⼀个数
for(int j = 0; j< 100; j++){
System.out.println((int)((Math.random()*9+1)*100000));
}
3. Int(10)意思是返回⼤于等于0,⼩于10的⼀个正整数,既然是⽣成6位随机数,每个数⼀定是0-9之内的,我循环6次,每
次从0-9随机选取⼀个数字拼接字符串返回,不就⾏了。
Random random = new Random();
String result="";
for (int i=0;i<6;i++){
result+=Int(10);
}
System.out.println(result);
4. Int(10)知道是什么意思了,最⼤的6位数是999999,最⼩的六位数是100000,我想到了下⾯的⽅法:
for (int i = 0; i <= 100; i++){
int flag = new Random().nextInt(999999);
if (flag < 100000){
flag += 100000;
}
System.out.println(flag);
}
5. 最后的⼀种⽅法,是引⼊了⼀个source字符串,从这个字符串⾥可以随机⽣成⼀个⼦串返回,很多pc⽹站⽤这个⽅法⽣成带字母数字
的验证码,原理类似3
for (int i = 0; i <= 100; i++)
{
nextint()方法String sources = "0123456789"; // 加上⼀些字母,就可以⽣成pc站的验证码了
Random rand = new Random();
StringBuffer flag = new StringBuffer();
for (int j = 0; j < 6; j++){
flag.append(sources.Int(9)) + "");
}
System.out.String());
}
ps: math.random()⽣成的是个伪随机数,何为伪随机数,这⾥java是以当前系统时间的相关数字作为种⼦数,按照特定复杂算法⽣成的,其实它⽣成的⼤量随机数是线性均匀分布的,⿊客是完全可能通过返回的⼤量随机数结果破解种⼦数的,所以它并不是真正的随机,叫伪随机数。由此我们可以知道通过计算机⽣成⼀个真随机数⼏乎是不可能的,因为最终的输出结果都是依赖算法程序的,这些算法程序本⾝就是固定的,我们只能通过更复杂的算法不断优化,让它⽆限趋近于真随机数,但不绝对。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。