文档章节

Math.random()和Random.nextInt()区别

BK灬
 BK灬
发布于 2015/09/16 11:06
字数 260
阅读 299
收藏 1
package cn.wangbingan.vip;

import java.util.Random;

/**
 * Math.random()和Random.nextInt()区别
 * 
 * @author AK
 * 
 */
public class RandomTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		// 随机数对象
		Random random = new Random();
		// 开始时间
		long startTime1 = System.nanoTime();
		// 生成随机数
		long a = random.nextInt(10000);
		// 结束时间
		long endTime1 = System.nanoTime();
		// 耗时时间
		long time1 = endTime1 - startTime1;
		System.out.println("生成随机数:" + a + "=>Random耗时:" + time1);

		// 开始时间
		long startTime2 = System.nanoTime();
		// 生成随机数
		int b = (int) (Math.random() * 10000);
		// 结束时间
		long endTime2 = System.nanoTime();
		// 耗时时间
		long time2 = endTime2 - startTime2;
		System.out.println("生成随机数:" + b + "=>Math耗时:" + time2);

	}

}

输出结果:

生成随机数:9441=>Random耗时:11000

生成随机数:7109=>Math耗时:43000

前者生成的随机数效率高于后者,时间上前者大约是后者50%到80%的时间,可能还要高.

造成这个原因如下:

Math.random()是Random.nextDouble()的一个内部方法.(所以肯定爸爸的效率高于儿子了)

Random.nextDouble()使用Random.next()两次,均匀的分布范围为0到1 - (2 ^ -53).

Random.nextInt(n)的使用Random.next()不多于两次, 返回值范围为0到n - 1的分布


© 著作权归作者所有

共有 人打赏支持
上一篇: 面试题(12)
下一篇: 面试题(11)
BK灬

BK灬

粉丝 46
博文 343
码字总数 142562
作品 0
朝阳
后端工程师
私信 提问
说说随机数

常用的java产生整型随机数的方法有三种: Math.random() Random.nextint() Random.nextint(int) 基本功能: 第一个产生0(包括)到1(不包括)之间的一个double类型的随机数。 第二个是产生一...

hubert_yu
2016/03/14
30
0
Java里使用patchca生成验证码

Patchca是Piotr Piastucki写的一个java验证码开源库,打包成jar文件发布,patchca使用简单但功能强大。 本例实现了自定义背景,由于生成图片较小,波动太大时会导致部分文字显示不全,所以更...

easonwang
2014/04/14
0
0
Java web 开发: 随机生成验证码,支持大小写字母、数字;随机字体

java随机产生验证码,可以随机生成数字、大写字母、小写字母。还可以随机生成文字字体、及大小。在图片上面可能字体都不不同、大小不等。 package com.hoo.util; import java.awt.Color;impo...

ibm_hoojo
2010/08/24
0
0
Java简易加减乘图像验证码生成

Java:TestYanzhengMaActionController.java package com.suyin.web.front.controller; import java.awt.Color; import java.awt.Font; import java.awt.Graphics2D; import java.awt.image.B......

引鸩怼孑
2016/08/04
46
0
jsp中生成的验证码和存在session里面的验证码不一致的处理

下面直接附上我的例子: 截图如下: 代码如下: 1.JAVA类:CodeServlet.java: [java] view plaincopy package cn.gov.csrc.servlet; import java.awt.Color; import java.awt.Font; import ......

期待变强的菜鸟
2014/05/20
0
4

没有更多内容

加载失败,请刷新页面

加载更多

jenkins安装

https://my.oschina.net/u/593517/blog/1797968 jenkins 安装 https://my.oschina.net/u/593517/blog/3028175 GIT 安装 https://my.oschina.net/u/593517/blog/3028179 maven 安装 插件安装 ......

Gm_ning
31分钟前
2
0
小言服务端解决方案-监控

框架保证方向,整体包容细节 为保证服务端运行平稳正常,owner应使得系统应保有相应的监控:系统监控,业务监控。而服务运行的平稳高效是否有保障跟监控粒度又成直接的正比关系。本文仅针对开...

重城重楼
42分钟前
2
0
搜索引擎(Elasticsearch搜索详解)

学完本课题,你应达成如下目标: 掌握ES搜索API的规则、用法。 掌握各种查询用法 搜索API 搜索API 端点地址 GET /twitter/_search?q=user:kimchy GET /twitter/tweet,user/_search?q=user:...

这很耳东先生
今天
7
0
浅谈如何减少GC的次数

GC会stop the world。会暂停程序的执行,带来延迟的代价。所以在开发中,我们不希望GC的次数过多。 本文将讨论如何在开发中改善各种细节,从而减少GC的次数。 (1)对象不用时最好显式置为 Nu...

浮躁的码农
今天
1
0
jpa 自定义返回对象

任何ORM框架都少不了开放自定义sql的问题。jpa自然也不例外,很多场景需要写复杂sql的。 首先定义一个方法签名,然后打上@Query注解。像下面这样,需要注意nativeQuery,这个表示query中的字...

朝如青丝暮成雪
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部