JAVA - 生成随机数

Java随机数产生原理

JAVA中的随机数都是伪随机数伪随机数是看似随机实质是固定的周期性序列也就是有规则的随机。Java的随机数产生是通过线性同余公式产生的,也就是说通过一个复杂的算法生成的。只要这个随机数是由确定算法生成的那就是伪随机只能通过不断算法优化使你的随机数更接近随机

JAVA产生随机数的方法

java.lang.Math类的Random()方法

* Math.Random()函数能够返回带正号的double值,取值范围是[0.0,1.0),在该范围内(近似)均匀分布。因为返回值是double类型的,小数点后面可以保留15位小数,所以产生相同的可能性非常小,在这一定程度上是随机数

* Math.Random()方法经过处理可获得多种类型或任意范围的随机数

//返回大于等于0,小于n之间的随机整数
int num1 = (int)(Math.random()*n);
//返回大于等于m,小于m+n之间的随机整数
int num2 = m + (int)(Math.random()*n);   
//随机生成a~z之间的字符
char ch1 = (char)('a' + (int)(Math.random()*('z'-'a'+1)));
//随机生成char1~char2的字符
char ch2 = (char)(char1 + (int)(Math.random()*(char2-char1+1)));

java.util.Random

通过实例化一个Random对象创建一个随机数生成器来生成随机数

* 类加载

import java.util.Random;

* Random的构造方法:创建随机数生成器

Random():编译器以系统当前时间作为随机数生成器的种子

Random(long seed):自定义随机数生成器的种子

注:种子数和生成的随机数字的区间没有任何关系种子是产生随机算法的起源数字通过一个函数将种子的值转化为随机数空间中的某一个点并且产生的随机数均匀的散布在空间中以后产生的随机数都与前一个随机数有关
Random r1 = new Random();
Random r2 = new Random(10);
* 生成随机数的方法

nextInt():返回一个随机整数

nextInt(int n):返回大于等于0小于n的随机整数 

nextLong():返回一个随机长整型值 

nextBoolean():返回一个随机布尔型值

nextFloat():返回一个随机浮点型值  

nextDouble():返回一个随机双精度型值  

nextGaussian():概率密度为高斯分布的双精度值  

Random r1 = new Random(20);
System.out.println(r1.nextInt(10));

如果用相同的种子创建两个Random实例,则对每个实例进行相同次数的方法调用,它们将生成并返回相同的数字

Random r1 = new Random(20);
Random r2 = new Random(20);
System.out.println(r1.nextInt(10));
System.out.println(r1.nextInt(10));
System.out.println(r2.nextInt(10));
System.out.println(r2.nextInt(10));

运行结果:

3
6
3
6

* 生成MIN到MAX范围内的随机数

Random rand = new Random();
//随机产生为一个MIN到MAX范围内的随机数
System.out.println(rand.nextInt(MAX - MIN + 1) + MIN);

  • 4
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值