Java-随机数Random

Java-随机数Random

Java中存在着两种Random方法

一、Math.Random

Math.Random()方法能够返回带正号的double值,该值大于等于0.0且小于1.0,即取值范围为[0.0,1.0)。

示例一:使用Math.Random()方法随机五个随机数

public class Main {

	public static void main(String[] args) {
		for(int i =0;i<5;i++)
			System.out.println(Math.random());
	}
}

运行结果

Java-随机数Random_第1张图片

示例二:使用Math.Random()方法随机五个1到20的整数,即范围[1,20]

public class Main {

	public static void main(String[] args) {
		for(int i =0;i<5;i++) {
			int temp = (int)(Math.random()*20+1);
			System.out.println(temp);
		}
	}
}

运行结果:

Java-随机数Random_第2张图片

二、java.util.Random

 这种方法是使用Randdom类的方法,该类位于java.util的package中,所以使用该方法需要在文件开头标明:
import java.util.Random;
该类有两种构造方法:
  • Random():创建一个Random对象
  • Random(long seed):使用seed为种子,创建一个Random对象
例如:
public class Main {
	public static void main(String[] args) {
		//无种子
		Random rand = new Random();
		//以10为种子
		Random randsd = new Random(10);
	}
}
当创建Random对象没有指定种子的时候会默认以当前系统的毫秒数作为种子。

示例一:Random类使用方法

随机五个1到20的整数,即范围[1,20]
public class Main {
	public static void main(String[] args) {
		Random rand = new Random();
		for(int i = 0; i < 5 ; i++)
			System.out.println(rand.nextInt(20) + 1);
	}
}

运行结果

Java-随机数Random_第3张图片

示例二:演示有种子和无种子的区别

分别使用有种子随机数器和无种子随机数器随机三次,每次随机五个[1,20]返回内的整数。
public class Main {
	public static void main(String[] args) {
		System.out.println("无种子随机数:");
		for (int x = 0; x < 3; x++) {
			Random rand = new Random();
			for (int i = 0; i < 5; i++)
				System.out.print(rand.nextInt(20) + 1 + "    ");
			System.out.println("");
		}

		System.out.println("有种子随机数:");
		for (int x = 0; x < 3; x++) {
			Random rand = new Random(10);
			for (int i = 0; i < 5; i++)
				System.out.print(rand.nextInt(20) + 1 + "    ");
			System.out.println("");
		}
	}
}

运行结果


Java-随机数Random_第4张图片
根据结果可以看出,相同种子创建的随机数器,随机的结果是一样的。由于第一个随机数器是以当前时间的毫秒数(默认)为种子,所以每次的种子是不一样的,随机到的数也是不一样的。

Random类的部分方法

  • protected int next(int bits):生成下一个伪随机数。
  • boolean nextBoolean():返回下一个伪随机数(boolean值)。
  • void nextBytes(byte[] bytes):生成随机字节并将其置于用户提供的 byte 数组中。
  • double nextDouble():返回下一个伪随机数(随机数是呈均匀分布的,并在0.0和1.0之间均匀分布的 double值)。
  • float nextFloat():返回下一个伪随机数(随机数是呈均匀分布的,并在0.0和1.0之间均匀分布float值)。
  • double nextGaussian():返回下一个伪随机数(随机数是呈高斯"正态"分布的,并且平均值是0.0,标准差是1.0的double值)
  • int nextInt():返回下一个伪随机数( 随机数是呈均匀分布的int 值)。
  • int nextInt(int n):返回一个伪随机数(随机数在0到n之间,不包括n)。
  • long nextLong():返回下一个伪随机数(随机数是呈均匀分布的 long 值)。
  • void setSeed(long seed):使用单个 long 种子设置此随机数生成器的种子。

你可能感兴趣的:(Java学习日志)