Random类产生随机数
* @param seed the initial seed
     * @see   #setSeed(long)
     */
++++++++++++++++++带种子数的构造方法+++++++++++++
    public Random(long seed) {
        if (getClass() == Random.class)
            this.seed = new AtomicLong(initialScramble(seed));
        else {
            // subclass might have overriden setSeed
            this.seed = new AtomicLong();
            setSeed(seed);
        }
    }
* @since 1.2
     */
public int nextInt(int n) {
        if (n <= 0)
            throw new IllegalArgumentException("n must be positive");
if ((n & -n) == n)  // i.e., n is a power of 2
            return (int)((n * (long)next(31)) >> 31);
int bits, val;
        do {
            bits = next();
            val = bits % n;
        } while (bits - val + (n-1) < 0);
        return val;
    }
可见Random的种子要求 大于0 的 。。。
public double nextDouble() {
        return (((long)(next()) << 27) + next())
            / (double)(1L << 53);
    }
+++++++++++++++nextFloat方法实现+++++++++++++
public float nextFloat() {
        return next() / ((float)(1 << 24));
    }
+++++++++++++++++nextInt方法实现:++++++++++
    public int nextInt() {
        return next();
    }
* @since 1.1
     */
    protected int next(int bits) {
        long oldseed, nextseed;
        AtomicLong seed = this.seed;
        do {
            oldseed = seed.get();
            nextseed = (oldseed * multiplier + addend) & mask;
        } while (!seed.compareAndSet(oldseed, nextseed));
        return (int)(nextseed >>> (48 - bits));
    }
Math类中也有一个random方法,该random方法的工作是生成一个[0,1.0)区间的随机小数。
通过阅读Math类的源代码可以发现,Math类中的random方法就是直接调用Random类中的nextDouble方法实现的。
* @see Random#nextDouble()
     */
    public static double random() {
        Random rnd = randomNumberGenerator;
        if (rnd == null) rnd = initRNG();
        return rnd.nextDouble();
    }
Random类产生随机数的更多相关文章
- .Net使用system.Security.Cryptography.RNGCryptoServiceProvider类与System.Random类生成随机数
		.Net中我们通常使用Random类生成随机数,在一些场景下,我却发现Random生成的随机数并不可靠,在下面的例子中我们通过循环随机生成10个随机数: ; i < ; i++) { Rando ... 
- 高并发分布式系统中生成全局唯一(订单号)Id  js返回上一页并刷新、返回上一页、自动刷新页面  父页面操作嵌套iframe子页面的HTML标签元素  .net判断System.Data.DataRow中是否包含某列  .Net使用system.Security.Cryptography.RNGCryptoServiceProvider类与System.Random类生成随机数
		高并发分布式系统中生成全局唯一(订单号)Id 1.GUID数据因毫无规律可言造成索引效率低下,影响了系统的性能,那么通过组合的方式,保留GUID的10个字节,用另6个字节表示GUID生成的时间(D ... 
- Random类(随机数)
		前言:总是忘记怎么用.上网一查,都是些有的没的...... 最简单却最常用的方法:Random.Next方法 首先,为Random类实例化一个对象: Random n=new Random(); Ne ... 
- 【代码笔记】Java常识性基础补充(一)——赋值运算符、逻辑运算符、三元运算符、Scanner类、键盘输入、Random类、随机数
		为什么要进行Java常识性基础补充? 之前学习Java语言,学得很多很杂,而且是很多不同的方面插入讲解的,比如在跟班上课,自学java编程例子,java语法,过了很久,因为各种原因长时间不怎么写,有时 ... 
- Random 类生成随机数
		Random类 (java.util) Random类中实现的随机算法是伪随机,也就是有规则的随机.在进行随机时,随机算法的起源数字称为种子数(seed),在种子数的基础上进行一定的变换,从而产生需要 ... 
- 关于Random类产生随机数的一些问题
		package test2; import java.util.Random; /** * @author cy * * @date 2015年7月28日 上午8:47:52 * * @Descrip ... 
- java Random类生成随机数
		封装一个方法: import java.util.Random; public class RandomUtil { /** * nextInt(num) 产生[0 ~ (num-1)]的随机数, 闭 ... 
- Random类
		Random类是随机数产生类,可以指定一个随机数的范围,然后任意产生在此范围中的数字. //================================================= // F ... 
- 数字(数学)操作类 Math  Random 类 ,大数字操作类
		Math 提供了大量的数学操作方法 Math类中所有的方法都是static 方法 
随机推荐
- css选择器测试2-用ul和li简单排版
			之前的博文:测试了一些css样式的优先级,都是比较常见的选择器 ,这里测试一些其他一些选择方式. *:通配符,所有页面的元素都走这个.设置多个class:一个标签里不能有两个class,如果想要设置多 ... 
- notepad++删除某关键字所在的行内容
			例如,我要删除zhao这个字符串所在的行 打开notepad++的ctrl+f窗口 点击替换选项,在查找目标输入^.*bp.*$ 其中替换为那里留空,查找模式选择正则表达式,建议也勾选匹配大小写,同时 ... 
- [LeetCode] 495. Teemo Attacking 提莫攻击
			In LOL world, there is a hero called Teemo and his attacking can make his enemy Ashe be in poisoned ... 
- 【VS开发】 Windows平台下管道的使用
			转载地址: 管道分类: 1. 匿名管道: 只能用于相关进程(如父子进程,兄弟进程),并在他们之间建立内存区域,进程终止后,匿名管道也就消失了. 通常用于:重定向子进程的标准输入输出,以便和父进程交换数 ... 
- tween算法
			tween算法 https://www.cnblogs.com/cloudgamer/archive/2009/01/06/Tween.html 参数说明: t: current time:当前时间: ... 
- redis主从分节
			概述 在现有企业中80%公司大部分使用的是redis单机服务,在实际的场景当中单一节点的redis容易面临风险. 面临问题 机器故障.我们部署到一台 Redis 服务器,当发生机器故障时,需要迁移到另 ... 
- 【C++札记】实现C++的string类
			C++有了string类使得操作字符串变得很方便.有关string类,面试过程中也经常问到的就是自己实现一个sring类.下边实现个String类供大家参考: String.h #pragma onc ... 
- python基础 — Queue 队列
			queue介绍 queue是python中的标准库,俗称队列. 在python中,多个线程之间的数据是共享的,多个线程进行数据交换的时候,不能够保证数据的安全性和一致性,所以当多个线程需要进行数据交换 ... 
- LeetCode第151场周赛(Java)
			这是我第一次写周赛的题目,而且还是虚拟的.从这次起,以后就将所有错过的题目都写到博客来.当然既然是我错的,那代码肯定不是我自己的.我会注明来源.并且我会自己敲一遍.多总结总是没坏处的. 另外比较糟糕的 ... 
- 在bat批处理中简单的延时方法
			使用for命令: 延时1s左右的方法: @echo off echo %time% ,,) do echo %%i>nul echo %time% pause %time%是用来显示延时时间,实 ... 
