当前位置:   article > 正文

Random(),Math.Random(),Math.round._math.random()生成的随机数相同吗

math.random()生成的随机数相同吗

1)Random():创建一个新的随机数生成器。此构造方法将随机数生成器的种子设置为某个值,该值与此构造方法的所有其他调用所用的值完全不同。
Random(long seed)使用单个long 种子创建一个新的随机数生成器。该种子是伪随机数生成器的内部状态的初始值,该生成器可通过方法 next(int) 维护。

Random 的一个特点是:相同种子数的Random对象,对应相同次数生成的随机数字是完全相同的;

Random random1 = new Random(10);
Random random2 = new Random(10);

random1、random2 对应相同次数生成的随机数字完全相同。比如:
System.out.println(ran.nextInt(10));
System.out.print(ran2.nextInt(10));
输出结果:
5
5


2)Math.random()能够返回带正号的double值,该值大于等于0.0且小于1.0,即取值范围是[0.0,1.0)的左闭右开区间,返回值是一个伪随机选择的数,在该范围内(近似)均匀分布。
for(int i = 0; i < 10; i++ ){
System.out.println((int)(Math.random()*5));
}
输出结果:
4,2,0,1,3,3,4,0,3,3

在使用Math.Random()的时候,需要注意的地方是该函数是返回double类型的值,所以在要赋值给其他类型的变量的时候注意需要进行塑形转换。
3)(四舍五入)Math.round(float a)返回最接近参数的 int;
   Math.round(double a)返回最接近参数的 long。
   System.out.println(Math.round(1.5));
   System.out.println(Math.round(-1.5));
   System.out.println(Math.round(0.5));
   System.out.println(Math.round(-0.5));
   输出:
2
-1
1
0
   特殊情况如下:
如果参数为 NaN,那么结果为 0。
如果结果为负无穷大或任何小于等于 Integer.MIN_VALUE 的值,那么结果等于 Integer.MIN_VALUE 的值。
如果参数为正无穷大或任何大于等于 Integer.MAX_VALUE 的值,那么结果等于 Integer.MAX_VALUE 的值。
 
   (向上取整)Math.ceil(double a)返回最小的(最接近负无穷大) double 值,该值大于等于参数,并等于某个整数。特殊情况如下:
如果参数值已经等于某个整数,那么结果与该参数相同。
如果参数为 NaN、无穷大、正 0 或负 0,那么结果与参数相同。
如果参数值小于 0,但是大于 -1.0,那么结果为负 0。
   System.out.println(Math.ceil(1.2));
   System.out.println(Math.ceil(-1.2));
   System.out.println(Math.ceil(0.6));
   System.out.println(Math.ceil(-0.6));
   输出:
2.0
-1.0
1.0
-0.0-0.0-0.01)Random():创建一个新的随机数生成器。此构造方法将随机数生成器的种子设置为某个值,该值与此构造方法的所有其他调用所用的值完全不同。
Random(long seed)使用单个long 种子创建一个新的随机数生成器。该种子是伪随机数生成器的内部状态的初始值,该生成器可通过方法 next(int) 维护。

Random 的一个特点是:相同种子数的Random对象,对应相同次数生成的随机数字是完全相同的;

Random random1 = new Random(10);
Random random2 = new Random(10);

random1、random2 对应相同次数生成的随机数字完全相同。比如:
System.out.println(ran.nextInt(10));
System.out.print(ran2.nextInt(10));
输出结果:
5
5


2)Math.random()能够返回带正号的double值,该值大于等于0.0且小于1.0,即取值范围是[0.0,1.0)的左闭右开区间,返回值是一个伪随机选择的数,在该范围内(近似)均匀分布。
for(int i = 0; i < 10; i++ ){
System.out.println((int)(Math.random()*5));
}
输出结果:
4,2,0,1,3,3,4,0,3,3

在使用Math.Random()的时候,需要注意的地方是该函数是返回double类型的值,所以在要赋值给其他类型的变量的时候注意需要进行塑形转换。
3)(四舍五入)Math.round(float a)返回最接近参数的 int;
   Math.round(double a)返回最接近参数的 long。
   System.out.println(Math.round(1.5));
   System.out.println(Math.round(-1.5));
   System.out.println(Math.round(0.5));
   System.out.println(Math.round(-0.5));
   输出:
2
-1
1
0
   特殊情况如下:
如果参数为 NaN,那么结果为 0。
如果结果为负无穷大或任何小于等于 Integer.MIN_VALUE 的值,那么结果等于 Integer.MIN_VALUE 的值。
如果参数为正无穷大或任何大于等于 Integer.MAX_VALUE 的值,那么结果等于 Integer.MAX_VALUE 的值。
 
   (向上取整)Math.ceil(double a)返回最小的(最接近负无穷大) double 值,该值大于等于参数,并等于某个整数。特殊情况如下:
如果参数值已经等于某个整数,那么结果与该参数相同。
如果参数为 NaN、无穷大、正 0 或负 0,那么结果与参数相同。
如果参数值小于 0,但是大于 -1.0,那么结果为负 0。
   System.out.println(Math.ceil(1.2));
   System.out.println(Math.ceil(-1.2));
   System.out.println(Math.ceil(0.6));
   System.out.println(Math.ceil(-0.6));
   输出:
2.0
-1.0
1.0
-0.0-0.0-0.0

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号