Random的setSeed方法
2016-03-30 10:20
337 查看
近来的demo中用到了random类。其中有个setSeed。
研究了下。主要作用是 设置随机种子,以便生成的随机数更加无法预测
随机数中用到。每次的Seed不同,random就不同了。
在进行随机时,随机算法的起源数字称为种子数(seed),在种子数的基础上进行一定的变换,从而产生需要的随机数字。
要了解Seed作用,得先了解随机数原理。
一般计算机的随机数都是伪随机数,
以一个真随机数(种子)作为初始条件,
然后用一定的算法不停迭代产生随机数。
setSeed 的方法介绍:
使用单个 long 种子设置此随机数生成器的种子。
setSeed 的常规协定是它更改此随机数生成器对象的状态,使其状态好像是刚刚使用参数 seed 作为种子创建它的状态一样。
通过将种子自动更新为 (seed ^ 0x5DEECE66DL) & ((1L < < 48) - 1)并清除nextGaussian()使用的haveNextNextGaussian 标志,Random 类可实现 setSeed 方法。
Random 类实现的 setSeed 恰好只使用 48 位的给定种子。
但是,通常重写方法可能使用 long 参数的所有 64 位作为种子值。
随机数种子就是产生随机数的第一次使用值, 机制是通过一个比较复杂的函数,将这个种子的值转化为随机数空间中的某一个点上,并且产生的随机数均匀的散布在空间中。 以后产生的随机数都与前一个随机数有关。
额 好懵 ,不懂 ,mark下来
研究了下。主要作用是 设置随机种子,以便生成的随机数更加无法预测
随机数中用到。每次的Seed不同,random就不同了。
在进行随机时,随机算法的起源数字称为种子数(seed),在种子数的基础上进行一定的变换,从而产生需要的随机数字。
要了解Seed作用,得先了解随机数原理。
一般计算机的随机数都是伪随机数,
以一个真随机数(种子)作为初始条件,
然后用一定的算法不停迭代产生随机数。
setSeed 的方法介绍:
使用单个 long 种子设置此随机数生成器的种子。
setSeed 的常规协定是它更改此随机数生成器对象的状态,使其状态好像是刚刚使用参数 seed 作为种子创建它的状态一样。
通过将种子自动更新为 (seed ^ 0x5DEECE66DL) & ((1L < < 48) - 1)并清除nextGaussian()使用的haveNextNextGaussian 标志,Random 类可实现 setSeed 方法。
Random 类实现的 setSeed 恰好只使用 48 位的给定种子。
但是,通常重写方法可能使用 long 参数的所有 64 位作为种子值。
随机数种子就是产生随机数的第一次使用值, 机制是通过一个比较复杂的函数,将这个种子的值转化为随机数空间中的某一个点上,并且产生的随机数均匀的散布在空间中。 以后产生的随机数都与前一个随机数有关。
额 好懵 ,不懂 ,mark下来
相关文章推荐
- 滚动轴承特征频率计算推导过程
- Android--activity获取返回值
- Linux权限360度赤裸裸华丽丽大曝光连载之一:从ls开始
- fedora 15 iso 硬盘安装
- Systemd 进程管理器
- sed 正则表达式
- 黄瓜涂上避孕药吃了会绝育-搜狐社区
- CentOS 6 初步计划有望5月发布
- 中科大Linux镜像源正式面向全国用户开张
- Intel揭幕3D晶体管,新处理器系列产生
- 30年前一个关于中国、美国教育的预言
- 中国白领过劳现象调查:商务楼里的黑砖窑童工
- ubuntu下kermit连接串口的问题
- Fragment 的简单使用
- mysql-函数CASE WHEN 语句使用说明
- jboss的JTA事物
- jQuery 语法
- [Java] Java中List 去掉重复的值,并保持原先List顺序
- android中如何判断edittext中数据为空?
- 安卓触屏进行的图形变换--平移,缩放核心代码