java.lang.Math.Random()与java.util.Random生成随机数的区别

一个是方法一个是对象之类的废话就不说了。关键在与两个生成随机数的不同特征。
因为在做图像特征提取,对整个像素空间的逐个提取、识别显然不太聪明,于是乎想起概率论上的一堆东东。
取得一个可以反应整个向量空间的随机数集合,不失为明智的选择。

《Think in Java》里面经常用那个对象弄,自然我首先想到了这个。同学则喜欢Math.Random,他认为生成的是一个在区间均匀分布的符合要求的随机数。以前从来没想过“随机”这个问题,到底是一个任意的数(各个概率一样,就像古典概型里面,硬币的正反一样),还是一个在空间有均匀分布特征的呢?

在网上搜罗了一大堆东西,发现说什么的都有,越来越迷糊。最后想起该看看权威的JDK API说明乎:

random(注:java.lang.Math)
public static double random()
返回带正号的 
double 值,该值大于等于 0.0 且小于 1.0。返回值是一个伪随机选择的数,在该范围内(近似)均匀分布。 
第一次调用该方法时,它将创建一个新的伪随机数生成器,与以下表达式完全相同 

new java.util.Random
之后,新的伪随机数生成器可用于此方法的所有调用,但不能用于其他地方。 
此方法是完全同步的,可允许多个线程使用而不出现错误。但是,如果许多线程需要以极高的速率生成伪随机数,那么这可能会减少每个线程对拥有自己伪随机数生成器的争用。 


返回: 
大于等于 
0.0 且小于 1.0 的伪随机 double 值。 

下面是java.util里面的

java.util 
类 Random
java.lang.Object
  java.util.Random
所有已实现的接口: 
Serializable 
直接已知子类: 
SecureRandom 

--------------------------------------------------------------------------------

public class Randomextends Objectimplements Serializable此类的实例用于生成伪随机数流。此类使用 48 位的种子,使用线性同余公式 (linear congruential form) 对其进行了修改(请参阅 Donald Knuth 的The Art of Computer Programming, Volume 3,第 3.2.1 节)。 

如果用相同的种子创建两个 Random 实例,则对每个实例进行相同的方法调用序列,它们将生成并返回相同的数字序列。为了保证此属性的实现,为类 Random 指定了特定的算法。为了 Java 代码的完全可移植性,Java 实现必须让类 Random 使用此处所示的所有算法。但是允许 Random 类的子类使用其他算法,只要其符合所有方法的常规协定即可。 

Random 类实现的算法使用一个 
protected 实用工具方法,每次调用它最多可提供 32 个伪随机生成的位。 

很多应用程序会发现 Math.random() 方法更易于使用。 


看看下面的就更加显而易见啦
next
protected int next(int bits)生成下一个伪随机数。当被所有其他方法使用时,子类应该重写此方法。 
next 的常规协定是,返回一个 
int 值,如果参数 bits 位处于 1 和 32(包括)之间,那么返回值的多数低位都将(大致)是单独选择的位值,每个位值是 0 或 1 的机会(大致)相等。通过将种子自动更新为 

(seed 
* 0x5DEECE66DL + 0xBL& ((1L << 48- 1)并返回 
(
int)(seed >>> (48 - bits)),Random 类可实现 next 方法。这是一个线性同余伪随机数生成器,由 D. H. Lehmer 定义,Donald E. Knuth 在 The Art of Computer Programming, Volume 3: Seminumerical Algorithms 的第 3.2.1 节中进行了描述。 

参数:
bits 
- 随机位。 
返回:
随机数生成器序列的下一个伪随机值。

于是我的结论如下:
1:java.lang.Math.Random()这个静态方法得到的是一个空间中有均匀分布特征的随机数。
2:java.util.Random,通过这个对象得到的则是“几何分布”
3:我的图像特征应该选择第一个方法比较适当。

问题:我的似乎应该说是一个抽样问题更为恰当。呼呼,先写到这里


啦啦啦,请高人指教。

posted @ 2008-05-01 17:15 Jarod.cn.LuLuLife 阅读(26693) | 评论 (3)编辑 收藏

终于可以运行了,发帖小庆祝一下。过段时间整理一下心得发出来。

posted @ 2008-05-01 04:54 Jarod.cn.LuLuLife 阅读(120) | 评论 (0)编辑 收藏

JSF路上,又是小树枝牵绊着我.

盯着屏幕10个小时了,还是举步维艰。

搜到几只Punk还有Rock的MP3,心情跟以前完全不一样了唉。
不过我的激荡还是属于这里的。

睡觉前发现两处好地方,明天继续加油。
(一个IBM,另一个sun的就不用说了)
https://javaserverfaces.dev.java.net/users.html
http://forum.java.sun.com/thread.jspa?threadID=703986&tstart=0
http://www-128.ibm.com/developerworks/library/j-jsf2/#resources

神哪,给我几个优秀的架构学习学习吧。国内几个例子,其中包括不少老厚老厚的清华出版社弄出来的,实在不敢恭维。
(音量调大大大大大,最好大到溢出)

posted @ 2008-04-27 23:08 Jarod.cn.LuLuLife 阅读(124) | 评论 (0)编辑 收藏

毕业设计,我的图像搜索引擎哦

终于完成了比较烂的图像内容识别部分。
本来定好了是用JSF开发的,唉哦,从来没用过的东西哦。没准备充分,现在又卡住了。

“冬眠”我的数据库实在是太方便了哦,哈哈哈哈哈哈哈。少写了无数行代码。

继续搜索文章中

posted @ 2008-04-27 16:05 Jarod.cn.LuLuLife 阅读(450) | 评论 (1)编辑 收藏

Sun 要完全开源了。非常想看看他的图形库技术啊。

posted @ 2008-04-24 23:58 Jarod.cn.LuLuLife 阅读(213) | 评论 (0)编辑 收藏

庆祝Blog开通了哦.

庆祝我的blog开始啦,终于弄好了封面。
是我白痴了,从来没弄过blog。

幸亏Blogjava的API(就是FaQ啦),写得通俗易懂,而且还是中文的。

posted @ 2008-04-24 16:00 Jarod.cn.LuLuLife 阅读(91) | 评论 (0)编辑 收藏

仅列出标题
共2页: 上一页 1 2 
<2024年3月>
252627282912
3456789
10111213141516
17181920212223
24252627282930
31123456

导航

统计

公告

我的知识Blog!

常用链接

留言簿(3)

随笔档案

文章档案

Image

搜索

最新评论

阅读排行榜

评论排行榜