import java.util.Scanner;
import java.util.Random;
public class Guess{
public static void main(String[] args){
//int number = (int)(Math.random()*100 +1);
/* java.lang.Math类中的random()方法;调用这个Math.random()函数能够返回带正号的double值
,该值大于等于0.0且小于1.0,即取值范围是[0.0,1.0)的左闭右开区间,返回值是一个伪随机选择的数,在该范围内(近似)均匀分布。*/
Random r = new Random();
int number = r.nextInt(100)+1;
Scanner sc = new Scanner(System.in);
while(true){
System.out.println("Please enter your guess:");
int inputNumber = sc.nextInt();
if(inputNumber > number){
System.out.println("your guess number too big");
}else if(inputNumber < number){
System.out.println("Your guess number too small");
}else{
System.out.println("Congratulations on your guess!");
break;
}
}
}
}
/*
1.java.Math.Random()实际是在内部调用java.util.Random()的,它有一个致命的弱点,它和系统时间有关,也就是说相隔时间很短的两个random比如:
double a = Math.random();
double b = Math.random();
即有可能会得到两个一模一样的double。
2.java.util.Random()在调用的时候可以实现和java.Math.Random()一样的功能,
而且他具有很多的调用方法,相对来说比较灵活。所以从总体来看,使用java.util.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()://返回下一个伪随机数,它是取自此随机数生成器序列的、呈高斯(“正态”)分布的double值,其平均值是0.0标准差是1.0。
.int nextInt()://返回下一个伪随机数,它是此随机数生成器的序列中均匀分布的 int 值。
.int nextInt(int n)://返回一个伪随机数,它是取自此随机数生成器序列的、在(包括和指定值(不包括)之间均匀分布的int值。
.long nextLong()://返回下一个伪随机数,它是取自此随机数生成器序列的均匀分布的 long 值。
.void setSeed(long seed)://使用单个 long 种子设置此随机数生成器的种子。