首先介绍随机数:
首先产生真正的随机数目前的计算机无法做到,目前来看只能量子力学能达到吧,计算机目前只能做到统计学上的随机,如根据鼠标移动,系统时间硬件参数等等,足以保证密码学上的安全性。在各个语言的的随机数实现中,都采用了种子的实现方式,这种方式的缺点很明显,如果知道的随机数种子,就能预测到下一次的随机数
Random random = new Random(100);
System.out.println("random.nextInt() = " + random.nextInt());
以上程序片段产生的随机数一直都是: 1193959466
import org.apache.commons.text.RandomStringGenerator;
import java.util.Random;
import static org.apache.commons.text.CharacterPredicates.DIGITS;
import static org.apache.commons.text.CharacterPredicates.LETTERS;
/**
* @author <a href="mailto:yunqing_shui@163.com">Ice Shui</a>
*/
public class RandomDemo {
public static void main(String[] args) {
Random random = new Random(100);
System.out.println("random.nextInt() = " + random.nextInt());
System.out.println("random.nextInt() = " + random.nextInt());
System.out.println("random.nextInt() = " + random.nextInt());
double random1 = Math.random();
System.out.println("random1 = " + random1);
RandomStringGenerator build = new RandomStringGenerator.Builder().withinRange('0', 'z').filteredBy(LETTERS, DIGITS).build();
for (int i = 0; i < 10; i++) {
String generate = build.generate(6);
System.out.println("generate = " + generate);
}
}
}