import java.util.*;
public class 随机加法 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int sum = 0;
Random r = new Random();
Scanner in = new Scanner(System.in);
long time = System.currentTimeMillis();//currentTimeMillis()返回以毫秒为单位的当前时间,
//System.currentTimeMillis()获得的是自1970-01-01 00:00:00.000到当前时刻的时间距离,类型为long
for(int i =0;i<10;i++) {
int a = r.nextInt(15)+1;
int b = r.nextInt(15)+1;
System.out.print("第"+(i+1)+"道:"+a+"+"+b+"=");
int c = in.nextInt();
if(a+b==c) {
sum++;
}
}
time = System.currentTimeMillis() - time;
System.out.println(sum +" "+ time);//时间为毫秒 ,
//随机产生两个小于100的整数的加法运算式的程序
// int a = (int) (Math.random() * 100);
// int b = (int) (Math.random() * 100);
// System.out.println(a + "+" + b + "=" + (a + b));
}
}
//编写程序,使它产生10个随机加法问题,加数是两个1到15之间的整数
//,显示正确答案的个数和测试时间
//Random r = new Random(47);
//int a = r.nextInt(26);
//System.out.println(a);
/*
想要获取一个范围内的随机数(例如26,随机数可能是0-25),首先需要一个种子(其实就是一个数值)。
每个种子会对应这个范围内(0-26)的唯一的一个随机数。
47这个种子在26这个范围内,所对应的随机数为24,所以每次随机得出的结果都为24.
(注意:47在26这个范围内对应的是24,这个是死的,固定的,无论你执行多少次,它还是24)
至于为什么种子47会对应24,这个涉及到java封装的算法,有兴趣可以深入了解。
*/
//Random r = new Random();
//int a = r.nextInt(26);
//System.out.println(a);
//然后一运行,发现每次运行出来的结果不一样,是所谓的随机数,原来如果没有种子的话,
//程序会取当前日期的毫秒数来作为种子,所以每次执行种子都会不同,因为每次时间的毫秒数是不一样的
//,所以随机出来的数也就会不同。
/*
总之,new Random(47)里面的47表示产生随机数的一个种子,nextInt(26)表示随机数的范围,种子和范围是相关联的
,一个种子对应一个范围内的一个固定的随机数,如果不填种子,则会默认取当前时间的毫秒数作为种子来生成随机数。
*/
//Java nextInt()函数 nextInt( int num) 能接受一个整数作为它所产生的随机整数的上限,下限为零,
//比如: nextInt(4)将产生0,1,2,3这4个数字中的任何一个数字,注意这里不是0-4,而是0-3。 。
//但下限总是零,不能更改,所以若要达到非零下限的效果,必须把上限减去下限的结果传给 nextInt( ),
//然后把下限加入 nextInt( ) 返回的整数。