关于random说明:
random模块
提供了一个通过一些算法提供了一个快速的伪随机数生成器,
可制定一个随机数的范围,然后产生此范围中的数字,
随机算法的起源数字为种子数(seed)。
注:种子数与生成的随机数字区间无关。
random对象生成( java.util.Random / java.lang.Math.Random;):
1.调用构造方法:
Random random=new Random();
2.调用构造方法,并通过一个种子数创建:
Random random=new Random(10);
常用方法:
public boolean nextBoolan(); //产生随机布尔值,概率是50%
public double nextDouble(); //随机生成double值,范围 [0,1.0)
public float nextFloat(); //随机生成float的值
public int nextInt(); //随机生成int值
public int nextInt(n); //随机生成小于n的值
指定区间值随机:
法1
(数据类型)(最小值+Math.random()*(最大值-最小值+1);
(int)(1+Math.random()*(10-1+1); //产生 [1-10]的int
法2
调用构造方法:Random random=new Random();
接受区间值: (数据类型) 变量名=随机数名称.方法(个数)+区间最小值;
int r=random.nextInt(80-67+1)+67; //产生 [67,80]区间的数
产生一个随机负数的方法:
法1 Math类的 negateExact();
Math.negateExact(new Random().nextInt(100));
法2 随机数加入负号
int num=-(new Random().nextInt());
法3 生成随机数乘以-1
int num=(new Random().nextInt())*(-1);
例题:
//1.从键盘上输入3个数,第一个代表要生成的随机数的个数,
//第2个数是随机数区间的最小值,第3个数是随机数区间的最大值.
//根据输入的数据,打印出对应的随机数.
Scanner scanner=new Scanner(System.in); //生成Scanner对象
System.out.println("请输入随机数的个数:");
int number=scanner.nextInt(); //接收
System.out.println("请输入随机数区间的的两个值");
int num1=scanner.nextInt();
int num2=scanner.nextInt();
int max=num1>num2?num1:num2; //计算最大值和最小值
int min=num1
Random random=new Random(); //Random对象
for (int i = 0 ; i < number; i++) {
int randomNumber=random.nextInt(max-min+1)+min; //生成基于最大值,最小值区间的值
System.out.print(randomNumber+"\t");
}
System.out.println();
//2.从键盘上输入一个整数.再生成10个[10,80]之间的随机数,如果
//随机数中刚好有数字和你输入的数字相同,打印 恭喜你,中奖了.
//如果10个随机数都不与输入的数字相同, 打印,很遗憾,没有中奖.
System.out.println("请输入一个10到80的数:");
int number2 = scanner.nextInt();
Random random2 = new Random();
boolean liky=false;
for (int i = 0; i < 10; i++) {
int r=random2.nextInt(80-10+1)+10;
System.out.print(r+"\t");
if (number2==r) {
liky=true;
}
}
if (liky) {
System.out.println("\n 恭喜你中奖了");
}else {
System.out.println("\n 很遗憾,你没有中奖");
}
scanner.close();