1、第第2 2课时课时 小组合作: 3人一组,每人扮演一个角色。 角色一: 组织者 (提示操作意图) 角色二: 操作者 (操作、演示讲解) 角色三: 资料员 (提示操作步骤、反馈、收集) 在我们现实生活中,哪些事情是不可预在我们现实生活中,哪些事情是不可预 见,随机产生的?见,随机产生的? 演示随机点名程序演示随机点名程序 随机产生,可以让我们感受到公开、公随机产生,可以让我们感受到公开、公 平和公正!平和公正! 以上这个问题,哪些需要随机产生,你以上这个问题,哪些需要随机产生,你 会用程序实现吗?会用程序实现吗? 1.rand()1.rand() 功能功能: :随机数发生器随机数发生器 用法用法
2、:int rand(void):int rand(void) 所在头文件所在头文件: stdlib.h: stdlib.h rand()rand()返回一随机数值的范围在返回一随机数值的范围在0 0至至RAND_MAX RAND_MAX 间。间。RAND_MAXRAND_MAX的范的范 围最少是在围最少是在3276732767之间之间(int)(int)。 如未设定随机数种子时,系统默认的随机数种子为如未设定随机数种子时,系统默认的随机数种子为1 1。 #include #include int main() int i; for(i=0; i10; i+) /随机产生10个数。 printf
3、(“%dn“, rand(); return 0; rand()rand()产生的是伪随机数字,每次执行时是相同的产生的是伪随机数字,每次执行时是相同的; ; 若要不相同若要不相同, ,用函数用函数srandsrand()()初始化它初始化它。 2.srand()2.srand() 功能功能: :初始化随机数发生器初始化随机数发生器 用法用法: void srand(unsigned int seed): void srand(unsigned int seed) 所在头文件所在头文件: stdlib.h: stdlib.h srand()srand()用来设置用来设置rand()rand()
4、产生随机数时的随机数种子。产生随机数时的随机数种子。 参数参数seedseed必须是个整数,如果每次必须是个整数,如果每次seedseed都设相同值,都设相同值,rand()rand()所产生所产生 的随机数值每次就会一样。的随机数值每次就会一样。 3.3.使用当前时钟作为随机数种子使用当前时钟作为随机数种子 rand()rand()产生的随机数在每次运行的时候都是与上一次相同的。产生的随机数在每次运行的时候都是与上一次相同的。 若要不同若要不同, ,用函数用函数srand()srand()初始化它。初始化它。 可以利用可以利用srand(unsigned int)(time(NULL)sra
5、nd(unsigned int)(time(NULL)的方法,产生不的方法,产生不 同的随机数种子,因为每一次运行程序的时间是不同的。同的随机数种子,因为每一次运行程序的时间是不同的。 随机函数用法回顾随机函数用法回顾 4.4.产生随机数的用法产生随机数的用法 1) 1) 给给srand()srand()提供一个种子提供一个种子,它是一个,它是一个intint类型;类型; 2) 2) 调用调用rand()rand(),它会根据提供给,它会根据提供给srand()srand()的种子值的种子值返回一个随机返回一个随机 数数( (在在0 0到到RAND_MAXRAND_MAX之间之间) ); 3)
6、 3) 根据需要多次调用根据需要多次调用rand()rand(),从而,从而不间断地得到不间断地得到新的随机数;新的随机数; 4) 4) 无论什么时候,都可以给无论什么时候,都可以给srand()srand()提供一个新的种子,从而提供一个新的种子,从而进进 一步“随机化”一步“随机化”rand()rand()的输出结果。的输出结果。 产生产生 0RAND_MAX之间的随机数程序 #include #include #include using namespace std; int main() srand(unsigned)time(NULL); for(int i = 0; i 10;i+
7、 ) cout rand() t; cout endl; return 0; 5.5.产生一定范围随机数的通用表示公式产生一定范围随机数的通用表示公式 要取得a,b)的随机整数,使用(rand() % (b-a)+ a; a小于等于小于等于x小于小于b 要取得a,b的随机整数,使用(rand() % (b-a+1)+ a; a小于等于小于等于x小于等于小于等于b 要取得(a,b的随机整数,使用(rand() % (b-a)+ a + 1; a小于小于x小于等于小于等于b 通用公式通用公式:a + rand() % n:a + rand() % n;其中的;其中的a a是起始值,是起始值,n n是整数的范是整数的范 围。围。 案例:随机点名程序案例:随机点名程序 拓展提升:拓展提升: 问题问题1:你爸爸喜欢买彩票吗?:你爸爸喜欢买彩票吗? 你们玩过在盒子里摸球游戏吗?你们玩过在盒子里摸球游戏吗? 你们到寺庙里,摇过竹签吗?你们到寺庙里,摇过竹签吗? 2.你们班级老师课堂提问,随机吗?你们班级老师课堂提问,随机吗? 课堂反思课堂反思 ? ? ? ? 本节课 学到了什么? 收获了什么? 课后作业:课后作业: 尝试采用随机函数编写一个班级随机点名的尝试采用随机函数编写一个班级随机点名的 程序。程序。 报告老师后,将可执行程序复制到班级电脑报告老师后,将可执行程序复制到班级电脑 中。中。