API:Random类说明简述


      Random类属于java.util类的子类,同时它实现的接口是Serialzable(序列化)。即public class Random extends Object implements Serialzable { }.

random这个类是用来产生一串伪随机数的(维基百科:伪随机数(或称为乱数),是使用一个确定性的算法计算出来的似乎是随机的数序),因此伪随机数实际上并不随机。在计算伪随机数时假如使用的开始值不变的话,那么伪随机数的数序也不变,例,random(4),产生的一串数,它是不变的,而“4”叫做种子)

random类中的种子数值可以达到48比特,它是用线性同余公式来进行修改得到的伪随机数的。

如果创建两个具有相同种子的random对象,那么他们产生的伪随机数是相同的。

如下:

public classUsingStringBuilder {

public staticRandomrand=newRandom(0);

public staticStringrandom1() {

StringBuilder result =newStringBuilder("[");

for(inti =0;i <5;i++) {

result.append(rand.nextInt(100));

result.append(", ");

}

result.delete(result.length() -2,result.length());

result.append("]");

returnresult.toString();

}

public staticStringrandom2() {

StringBuilder result =newStringBuilder("[");

for(inti =0;i <5;i++) {

result.append(rand.nextInt(100));

result.append(", ");

}

result.delete(result.length() -2,result.length());

result.append("]");

returnresult.toString();

}

public static voidmain(String[] args) {

//  String a = random2();

System.out.println("random1序列值"+random1().toString());

System.out.println("random2序列值"+random2().toString());

}

}

为了保证这个属性,为random类指定了特定的算法,为了java代码的绝对可移植性,java实现时必须使用Random类所示的所有算法。不过random的子类则允许使用其他的算法,只要他们遵守所有方法中的正常的要求即可。

由random类实现的算法用了保护的实用程序方法,每个调用可提供多达32位的伪随机数。

//这使得Math中的random()使用更加的方便。

java.util.Random的实现是在线程安全情况下实现的,然而,跨线程同时使用相同的java.util.Random实现可能会遇到冲突,从而导致性能下降。如果在多线程设计模式下,读者要考虑使用Class ThreadLocalRandom 。

由于java.util.Random的实例化不是加密安全的,读者可以参考使用SercureRandom来获得一个加密安全的伪随机生成器供安全敏感应用程序使用。

你可能感兴趣的:(API:Random类说明简述)