随机数产生

1. Random产生

这里示例,我们产生20个1000以内的整数

import java.util.Random;

public class RandomTest {
    public static void random1(){
        Random r = new Random();
        for(int i=0;i<20;i++){
            int num = r.nextInt(1000);
            System.out.print(num + " ");
        }
    }

    public static void main(String[] args) {
        random1();
    }
}
//输出
383 205 604 568 525 418 759 558 804 728 205 723 866 567 521 592 399 434 221 68 

注:
1)这里的nextInt产生的数,包括[0,num),也就是这里是0-999
2)Random初始化的时候,默认是没有参数的,也就是以当前时间为种子,
而当然我们也可以指定一个long的参数作为种子,
3)如果种子相同,产生的随机数序列也是相同的

2. 使用Math.random产生

产生一个指定范围的随机数

public static void random2(){
        int min = 1;
        int max = 100;
        for(int i=0;i<20;i++){
            double d = Math.random();
            int v = (int)(d * (max-min) + min);
            System.out.print(v + " ");
        }
        System.out.println();
    }
//输出
74 88 65 13 34 72 13 14 13 75 62 92 9 73 45 47 16 64 74 52

注:
1)Math.random会产生一个[0.0-1.0)之间的随机数
2)(int)(d(max-min) + min) 产生[min,max)之间的数,d(max-min)产生[0,(max-min)),
d*(max-min) +min产生[min,max)之间的随机数

3. ThreadLocalRandom产生

public static void random3(){
        for(int i=0;i<20;i++){
            int num = ThreadLocalRandom.current().nextInt(1000);
            System.out.print(num + " ");
        }
        System.out.println();
    }
//输出
585 971 182 919 416 505 127 223 662 944 533 340 990 763 738 863 566 970 645 996

使用方法类似于第一种

4. 使用SecureRandom产生

使用加密的强随机数生成器RNG,使产生的种子是真正的随机数,保证输出的不确定性

public static void random4() throws NoSuchAlgorithmException {
        SecureRandom random = SecureRandom.getInstance("SHA1PRNG");
        for(int i=0;i<20;i++){
            int num = random.nextInt(1000);
            System.out.print(num + " ");
        }
    }
//输出
788 72 159 367 254 9 157 681 367 8 636 34 695 202 530 960 832 489 439 215
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容