2009年4月24日星期五

Java中的随机数

相关类:
java.util.Random
java.util.Math
java.security.SecureRandom

Math提供了一个静态方法random(),该方法返回一个 等于或大于0.0小于1.0(0.0 <<= returned value <1.0)的double型随即数。它其实也依赖于一个Random对象来生成这个随机数的。

SecureRandom能够生成具有安全性的随机数, 其应用例子如用于生成Http会话ID(在Tomcat 等容器有SessionIdGenerator类用于生产Http会话ID). SecureRandom类的设计上采用了Service-Provider的模式,它继承了Random, 重写了Random中的next(int numBits)和nextBytes(byte[] bytes)方法,把实际的随机数的生成工作delegate给具体的provider, 如果用户没提供provider,它会默认用Sun的implementation. SecureRandom是如何做到保证生成的随机数具备安全性呢?主要是使到随机数不可预测性,不想Random那样可以推测出之前或之后的随机数出来。

相关资料

1. Sun的Tech Tips 文档 USING RANDOM NUMBERS FOR TESTING AND SIMULATION

2. A Java Programmer’s Guide to Random Numbers
Part 1: Beyond java.util.Random
Part 2: Not just coins and dice

没有评论:

发表评论