随机数、唯一字符串

来源:互联网 发布:淘宝论坛帐号 编辑:程序博客网 时间:2024/06/05 11:00

java.util.Random类

在Java中我们可以使用java.util.Random类来产生一个随机数发生器。它有两种形式的构造函数,分别是Random()和Random(long seed):

Random()使用当前时间即System.currentTimeMillis()作为发生器的种子,Random(long seed)使用指定的seed作为发生器的种子。随机数发生器(Random)对象产生以后,通过调用不同的method:nextInt()、

nextLong()、nextFloat()、nextDouble()等获得不同类型随机数。

如果2个Random对象使用相同的种子(比如都是100),并且以相同的顺序调用相同的函数,那它们返回值完全相同。如下面代码中两个Random对象的输出完全相同,并且不管执行多少次,结果都不变,所以这是一个伪随机

    publicstaticvoid main(String[]args){

         Random random1 = new Random(100);

         System.out.println(random1.nextInt());

         System.out.println(random1.nextFloat());

         System.out.println(random1.nextBoolean());

         Random random2 = new Random(100);

         System.out.println(random2.nextInt());

         System.out.println(random2.nextFloat());

         System.out.println(random2.nextBoolean());

    }

输出:
-1193959466
0.7346627
false
-1193959466
0.7346627
false

Math.random()
产生[0.0,1.0)范围的double型随机数,不是伪随机。

生成指定范围随机数:
生成0到(n-1)的随机数整数:

         Random random = new Random();

         System.out.println(random.nextInt(10));

或:

         Random random = new Random();

         System.out.println(Math.abs(random.nextInt())%10);

上面代码生成0-9随机数
当然也可以用Math.random()来生成指定范围随机数,结合+、*、/便可。

生成唯一字符串:
        UUID.randomUUID().toString();
GUID是一个128位长的数字,一般用16进制表示。算法的核心思想是结合机器的网卡、当地时间、一个随机数来生成GUID。从理论上讲,如果一台机器每秒产生10000000个GUID,则可以保证(概率意义上)3240年不重复。
















0 0
原创粉丝点击