使用Java中的Random类产生随机数

java.util
类 Random

java.lang.Object
  java.util.Random

public class Random
extends Objectimplements Serializable
一、注意事项
1.用相同的初值创建Random对象,得到的随机数序列是相同的。例如:
Random ran1=new Random(100);	
Random ran2=new Random(100);
以上两种方法得到的随机数相同,而且每次都一样,也就是说	Random(100) 其实是一个固定值。

2.针对上述这个问题,Java设计者们在Random类的Random()构造方法中使用当前的时间来初始化Random对象,因为没有任何时刻的时间是相同的,所以就可以减少随机数序列相同的可能性。

二、主要方法
构造方法摘要
Random()           创建一个新的随机数生成器。
Random(long seed)           使用单个 long 种子创建一个新随机数生成器: public Random(long seed) { setSeed(seed); } next 方法使用它来保存随机数生成器的状态。
方法摘要
protected  int next(int bits)           生成下一个伪随机数。
int nextInt()           返回下一个伪随机数,它是此随机数生成器的序列中均匀分布的 int 值。
 int nextInt(int n)           返回一个伪随机数,它是从此随机数生成器的序列中取出的、在 0(包括)和指定值(不包括)之间均匀分布的 int值。
 long nextLong()           返回下一个伪随机数,它是从此随机数生成器的序列中取出的、均匀分布的 long 值。
 void setSeed(long seed)           使用单个 long 种子设置此随机数生成器的种子。

三、示例
1.输出5个0~100的随机数
import java.util.*;
class  StringDemo
{
	public static void main(String[] args) 
	{
		Random ran1=new Random();
		
		for(int ln=0;ln<5;ln++)
		{
			int temp = ran1.nextInt(101); 
			System.out.println(temp);
		}
	}
}
 
  
注意:nextInt()方法是左包含,右不包含,即[0,101),不包含101。从而满足输出0~100的随机数

2.改变种子输出随机数
import java.util.*;
class  StringDemo
{
	public static void main(String[] args) 
	{
		Random ran1=new Random(20);		
		System.out.println(ran1.nextInt());


		for(long ln=50;ln<200;ln++)
		{
			ran1.setSeed(ln);  // 改变Random生成器的种子
			System.out.println(ran1.nextInt());
		}
	}
}

3.利用当前时间输出随机数
import java.util.*;
class  StringDemo
{
	public static void main(String[] args) 
	{
		Calendar c1=Calendar.getInstance();
		
		long ln;
		ln = (c1.get(Calendar.YEAR)+(c1.get(Calendar.MONTH)+1)+
		c1.get(Calendar.DAY_OF_MONTH)+c1.get(Calendar.HOUR_OF_DAY)+
		c1.get(Calendar.MINUTE)+c1.get(Calendar.SECOND));


		Random ran1=new Random(ln);		
		System.out.println(ran1.nextInt());


		Random ran2=new Random(100);		
		System.out.println(ran2.nextInt());
	
			
	}
}


你可能感兴趣的:(JAVA基础)