说说随机数

常用的java产生整型随机数的方法有三种:

Math.random()   Random.nextint()   Random.nextint(int)

基本功能:

第一个产生0(包括)到1(不包括)之间的一个double类型的随机数。

第二个是产生一个没有限制的随机整数(可能为负)

第三个是产生一个0(包括)到指定整数(不包括)之间的一个随机正整数

使用方法:

第一个一般是Math.random()*int a 来拿到0到 a-1  (都包括)范围的随机数,如果是Math.random()*int a+int b  拿到的就是b到a+b-1(都包括)范围的随机数。

第二个一般是在 Random.nextint()后取余,若想取得正的随机数,配合结果取绝对值的写法为:Math.abs(random.nextInt())%(int a)   这样拿到的就是0到a(不包括)之间的整数。

第三个使用较为方便,可以直接取到指定区间(不包括参数)的随机数。若想不从零开始则加上指定int型。

总结:以上生成随机数的方法不管是使用的方便程度和效率,第三种方法都占有优势。原因是它们底层都要调用Random.next()方法,但Math.random()调用了两次,而Random.nextint()调用不会多于两次。


升级版:

如何产生不重复的随机数?

最容易想到的方法就是去重了,比较剔除之前已经出现的随机数。

具体代码如下:

Random  random = new Random();
    	int a[] = new int[4]; 
 		a[0] = random.nextInt(10);
 		for (int i = 1; i < a.length; i++) {
			a[i] = random.nextInt(10);
			for (int j = 0; j < i; j++) {
				if (a[i] == a[j]) {
					
					i--;
				}
			}
		}

以上代码就产生4个0到10(不包括)之间的不重复的随机数。

注意:一定要注意随机的数的范围要大于取值的个数,否则程序会进入死循环。

转载于:https://my.oschina.net/u/2599355/blog/637249

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值