目录
方法一: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()); //返回一个随机长整形
}
}