第一话:如何生成一个随机数字,指定随机数范围为60-100
int f = (int)(Math.random()*40 + 60);//60 到100之间随机数字
f = (int)(Math.random()*40);//0到40之间的数字
System.out.println(Math.random());
System.out.println(f);
以上采用+60 的办法,巧妙解决了最小数是60的问题。
我们知道Math.random 生成0到0.99999之间的随机数,所以前面的*40 就会得到0-40之间的数字。
第二话:指定一定范围的随机数另一种生成办法
public static void main(String[] args) {
int max=20;
int min=10;
Random random = new Random();
int s = random.nextInt(max)%(max-min+1) + min;
System.out.println(s);
}
第三话:如何生成一个很大的数字的随机串,比如13601124418(手机号码?不是)
有时候我们需要更长的随机数,比如要生成一串什么密钥之类
/**
* 获取随机数,此方法不支持16位以上的随机数,如果n>16 那么n会被默认为16
*
* @param n
* 随机数位数
* @return 一串字符串的随机数
*/
public static String getRandom(int n) {
if (n > 16) {
n = 16;
}
String a = "";
Random r = new Random();
Long b = Math.abs(r.nextLong());
r = null;
a = b.toString().substring(0, n);
return a;
}
如果需要超过16位的,可以考虑两次getRandom然后链接起来
getRandom(16) + "" + getRandom(16);
java随机算法,会生成不太公平的随机数,相对公平的随机算法
for(int i=0;i<20;i++){
System.out.println(Math.round(Math.floor(Math.random() * 11 * 10000)));
}