java多线程    Java入门    vsftp    ftp    linux配置    centos    FRP教程    HBase    Html5缓存    webp    zabbix    分布式    neo4j图数据库    

java三话:如何生成指定范围随机数

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


This entry was posted in JAVA and tagged , , , . Bookmark the permalink.
月小升QQ 2651044202, 技术交流QQ群 178491360
首发地址:月小升博客https://java-er.com/blog/java-how-to-create-random-number/
无特殊说明,文章均为月小升原创,欢迎转载,转载请注明本文地址,谢谢
您的评论是我写作的动力.

Leave a Reply