Java产生随机数的方法、

方法一:Math.random()方法

基本操作

返回值:

大于等于 0.0 且小于 1.0 的伪随机 double 值。

返回值是一个伪随机选择的数,在该范围内(近似)均匀分布。
即:0.0<=Math.random()<1.0,但是加处理就可以产生任意随机数

Math.random()*10;	//返回1.0-10.0之间随机数

(int)(Math.random()*100; //返回1-100之间的整数

生成指定范围

n,m为整数,需要[n,m)

//Math.floor()为向下取整数
Math.floor(Math.random()*(m-n))+n;

n,m为整数,需要[n,m]

Math.floor(Math.random() * (m- n + 1)) + n;

n,m为整数,需要(n,m]

Math.ceil(Math.random()*(m-n))+n;

方法二:Random类

创建方法的不同

创建方法一: Random():创建一个新的随机数生成器。

每次的结果都不同!

//没有提前给定种子数
Random random = new Random();
for(int x=0;x<20;x++){
	System.out.print("random="+random.nextInt(20)+",");
}

在这里插入图片描述

创建方法二: Random(long seed):使用单个 long 种子创建一个新的随机数生成器。

相同种子数的Random对象,对应相同次数生成的随机数字是完全相同的

import java.util.Random;
	 
	public class randomTest {
	    public static void main(String args[])
	    {
	    	Random random1 = new Random(20);//这个20代表种子数 创建一个新的随机数生成器
	    Random random2 = new Random(20);
	    //用for循环输出随机次数
	    for (int i = 0; i < 10; i++) {
	        //打印20次随机生成的数字
	        System.out.print("random1=" + random1.nextInt(20) + ",");
	        if(i%5==0)
	        	 System.out.print("\n");
	    }
	    System.out.println();
	    
	    for (int j = 0; j < 10; j++) {
	        System.out.print("random2=" + random2.nextInt(20) + ",");
	        if(j%5==0)
	        	 System.out.print("\n");
	    }
	}
}

在这里插入图片描述

不同类型随机数的生成

1.nextLong
public long nextLong()

返回:
下一个伪随机数,它是此随机数生成器序列中均匀分布的 long 值。

2.nextBoolean
public boolean nextBoolean()

值 true 和 false 的生成概率(大致)相同。

返回:
下一个伪随机数,它是此随机数生成器的序列中均匀分布的 boolean 值。

3.nextFloat
public float nextFloat()

返回:
下一个伪随机数,它是取自此随机数生成器序列的、在 0.0 和 1.0 之间均匀分布的 float 值

nextFloat 的常规协定是,伪随机地生成并返回一个从 0.0f(包括)到 1.0f(包括)范围内均匀选择(大致)的 float 值。所有可能的 224 个 float 值(其形式为 m x 2-24,其中 m 是一个小于 224 的正整数)的生成概率(大致)相同。

前面的描述中使用了不确定的词“大致”,因为 next 方法只是一个大致上独立选择位的无偏源。如果它是一个随机选择位的最佳来源,那么给出的算法应该从规定范围完全一致地选择 float 值。

4.nextDouble
public double nextDouble()

返回:
下一个伪随机数,它是此随机数生成器序列中 0.0 和 1.0 之间均匀分布的 double 值

nextDouble 的常规协定是,伪随机地生成并返回一个从 0.0d(包括)到 1.0d(不包括)范围内均匀选择(大致)的 double 值。

5.nextGaussian
public double nextGaussian()

返回:
下一个伪随机数,它是取自此随机数生成器序列的、呈高斯(“正态”)分布的 double 值,其平均值是 0.0,标准差是 1.0。

nextGaussian 的常规协定是,伪随机地生成并返回一个 double 值,该值从(大致)具有平均值 0.0 和标准差 1.0 的标准正态分布中选择。

6.nextInt
public int nextInt()

返回:
下一个伪随机数,它是此随机数生成器的序列中均匀分布的 int 值。

public int nextInt(int n)

参数:
n - 要返回的随机数的范围。必须为正数。
返回:
下一个伪随机数,在此随机数生成器序列中 0(包括)和 n(不包括)之间均匀分布的 int 值。
抛出:
IllegalArgumentException - 如果 n 不是正数

7.nextBytes

public void nextBytes(byte[] bytes)
生成随机字节并将其置于用户提供的 byte 数组中。所生成的随机字节数等于该 byte 数组的长度。

参数:
bytes - 用随机字节填充的 byte 数组
抛出:
NullPointerException - 如果 byte 数组为 null

8.next
protected int next(int bits)

生成下一个伪随机数。当被所有其他方法使用时,子类应该重写此方法。
参数:
bits - 随机位。
返回:
随机数生成器序列的下一个伪随机值。

Java实例

import java.util.Random;
 
public class randomTest {
    public static void main(String args[])
    {
        Random random=new Random();//以系统当前时间作为随机数生成的种子
        System.out.println(random.nextInt(10));//返回一个大于0且小于10的整数
        System.out.println(random.nextFloat()); //返回一个随机浮点型
        System.out.println(random.nextBoolean());  //返回一个随机布尔型值
        System.out.println(random.nextDouble());  //返回一个随机双精度型
        System.out.println(random.nextLong());  //返回一个随机长整形
 
    }
}

在这里插入图片描述

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值