第一话:如何生成一个随机数字,指定随机数范围为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))); } |