java中存在两个随机函数,它们分别来自 java.long.Math.random() 和 java.util.Random() 其中前者的适用范围比较小,完全可以被后者取代。
java.lang.Math.random()
public static double random(); 此方法是一个无参,double类型返回值的公开静态方法。
返回一个大于0的double类型数据,该值大于等于0.0且小于1.0,返回的是一个伪随机选择数,在该范围内(几乎)均匀分布。
随机生成0~100之间的一个随机整数:int i=(int)(Math.random()*100);
java.util.Random()
返回带正号的double值,即取值范围是[ 0.0 , 1.0 )的左闭右开区间,返回值是一个伪随机选择的数,在该范围内(近似)均匀分布。
方法摘要 | |
---|---|
protected int | next(int bits) 生成下一个伪随机数。 |
boolean | nextBoolean() 返回下一个伪随机数,它是取自此随机数生成器序列的均匀分布的 boolean 值。 |
void | nextBytes(byte[] bytes) 生成随机字节并将其置于用户提供的 byte 数组中。 |
double | nextDouble() 返回下一个伪随机数,它是取自此随机数生成器序列的、在 0.0 和 1.0 之间均匀分布的 double 值。 |
float | nextFloat() 返回下一个伪随机数,它是取自此随机数生成器序列的、在 0.0 和 1.0 之间均匀分布的 float 值。 |
double | nextGaussian() 返回下一个伪随机数,它是取自此随机数生成器序列的、呈高斯(“正态”)分布的 double 值,其平均值是 0.0 ,标准差是 1.0 。 |
int | nextInt() 返回下一个伪随机数,它是此随机数生成器的序列中均匀分布的 int 值。 |
int | nextInt(int n) 返回一个伪随机数,它是取自此随机数生成器序列的、在 0(包括)和指定值(不包括)之间均匀分布的 int 值。 |
long | nextLong() 返回下一个伪随机数,它是取自此随机数生成器序列的均匀分布的 long 值。 |
void | setSeed(long seed) 使用单个 long 种子设置此随机数生成器的种子。 |
随机生成0~100之间的一个随机整数:
Random rand=new Random(); int j=rand.nextInt(100);
构造方法摘要 | |
---|---|
Random() 创建一个新的随机数生成器。 | |
Random(long seed) 使用单个 long 种子创建一个新的随机数生成器。 |
Random():创建一个新的随机数生成器。
Random(long seed):使用单个 long 种子创建一个新的随机数生成器。
第一种构造方法是使用默认当前系统时间的毫秒数作为种子数:Random r1 = new Random();
Random random = new Random();
int randomNumber1= random.nextInt(100);
第二种方法是使用自己指定的种子数
Random random1 = new Random(100);
for(int i = 0; i < 10; i++){
System.out.print(random1.nextInt(10) + " ");
}
发现只要种子数和nextInt()中的参数一致的话,每次生成的随机数都是一样的(所以这是伪随机数)。