点名器——随机数的应用

  • 1、点名器
  • 2、随机思想在C++上的表达
  • 3、点名器的制作
    • 1、分析
    • 2、组合与添加
    • 3、修改与简化
    • 4、功能的完善

1、点名器

点名器在生活中是一种普遍常见的随机数的应用。点名器包含着一种数学领域中一种很重要的思想——随机思想。随机在数学领域上有一个很高的地位。

2、随机思想在C++上的表达

C++具有随机函数rand(),而在指令编辑器中,一般都会设置“随机种子”,所以C++还有随机种子srand()
设置随机种子的格式为srand(time(0));
rand()srand() 均需添加头文件 #include<cstdlib>,而 time(0) 需要添加头文件 #include<ctime>
通常,表示由x到y的随机数,用 x+rand()%(y-x+1) 表示(注意:x小于y)。

//例子
#include<cstdlib>
#include<ctime>
using namespace std;
int main()
{int x,y,a;srand(time(0));cin >> x >> y;a = x + rand() % (y - x + 1);         //a赋值为x到y的随机整数cout << a;return 0;
}

3、点名器的制作

1、分析

首先,群体的人数并不是一成不变的。因此,我们要让点名器“适应”人数。由此,我们可以定义一个变量num。

int num;

其次,我们还需要一个变量,保存生成的随机数。因此可以定义一个变量random。

int random;

此时,我们要让点名器生成一个1到num的整数。通过上面的说明,可知应先设置随机种子,再进行随机数的生成。

srand(time(0));
random = 1 + rand() % num;

2、组合与添加

接下来,就是将我们上部分的代码段组合起来了。

int num, random;
srand(time(0));
random = 1 + rand() % num;

虽然代码段组合了,但是此时我们无法输入人数,也无法知道random的值。所以此时,我们要使用格式化函数输入人数num、输出random。
格式化输入函数是scanf(),格式化输出是printf(),使用时需添加头文件 #include<cstdio>

int num, random;
srand(time(0));
scanf("%d",&num);
random = 1 + rand() % num;
printf("%d\n",random);

3、修改与简化

最后,我们就要将整个代码完整地打出来了。我们需要将头文件、命名空间、主函数添加上去。

#include<cstdlib>
#include<ctime>
#include<cstdio>
using namespace std;
int main()
{int num,random;srand(time(0));scanf("%d",&num);random = 1 + rand() % num ;printf("%d\n",random);return 0;
}

仔细观察,发现random其实是一个多余的变量。我们只需将随机值转移到格式化输出即可。

#include<cstdlib>
#include<ctime>
#include<cstdio>
using namespace std;
int main()
{int num;srand(time(0));scanf("%d",&num);printf("%d\n",1 + rand() % num);return 0;
}

运行一下,点名器就可以使用了。

4、功能的完善

我们也可以对程序添加一些语言,使输入和输出不那么枯燥。

#include<cstdlib>
#include<ctime>
#include<cstdio>
using namespace std;
int main()
{int num;srand(time(0));printf("请输入人数:"); scanf("%d",&num);printf("被点到的是%d号。\n",1 + rand() % num);return 0;
}

当然,点名器一般都不仅仅使用一次。这时,我们可以使用一个while循环,造成无限循环的结构,并利用 if 判断语句以0表示结束。
while循环与 if 判断的格式是:

while(循环条件)
{循环语句(组);
}
if(成立条件)
{语句(组);
}

结束循环节时,要使用 break; 函数。
如此,我们可以得到:

#include<cstdlib>
#include<ctime>
#include<cstdio>
using namespace std;
int main()
{int num;srand(time(0));while(true){printf("请输入人数:"); scanf("%d",&num);if(num==0)    //此处==是关系运算符,不是赋值号{break;}printf("被点到的是%d号。\n",1 + rand() % num);}return 0;
}

当然,错误是不可避免的。我们还可以添加一个容错机制,提醒用户输入无效,并让用户重新输入。

#include<cstdlib>
#include<ctime>
#include<cstdio>
using namespace std;
int main()
{int num;srand(time(0));while(true){printf("请输入人数:"); scanf("%d",&num);while(num<0)   //注意:0是用于退出的,是有意义的,容错机制中不能包含0{printf("您输入的人数无效,请重新输入:"); scanf("%d",&num);}if(num==0){break;}printf("被点到的是%d号。\n",1 + rand() % num);}return 0;
}

这样,点名器也就制作完成了。

点名器——随机数的应用相关推荐

  1. elementui vue的html随机点名器软件网页版源码1.1

    **在之前基础上新增了点击开始点名之后,判断姓名池的数量的判断,如果数量为零给出提示. 按钮的双击, 如果是在姓名池,在会进入上面的被点名状态, 如果是在上面卡片中的点名状态,则会重新回到姓名池 ** ...

  2. 基于element-ui,vue的html随机点名器

    点击开始点名,进入循环,点击停止,会禁用按钮 在500毫秒之后,将点到的人名字放到上面,在下面表体会消失这个人, 点名之后可以刷新.暂时还没有做将点到的人还回来.(1.0) 用到的资料,element ...

  3. Java GUI简单点名器

    2019独角兽企业重金招聘Python工程师标准>>> 1.业务代码 package cn.polin.spider;import java.awt.BorderLayout; im ...

  4. 【前端学习项目】web前端#001网页点名器(html+css+js实现用户交互)

    目录 首先先把学生一个一个的放到数组中 其次遍历这个数组 然后按钮事件触发 最后附上完整代码: 最后的实现 这个故事是这样开始的,新学期伊始,我们java老师为了检测学生的java基础水平,留下了这么 ...

  5. java--案例:[Random]随机100-200的数、班级点名器、控制台输入三个数,输出最大值,或最小值?

    随机100-200的数 思路:先随机到100的数,然后再加100 public static void main(String[] args) {         Random ran = new R ...

  6. 一起用Python做个上课点名器,好玩又实用!

    前言 前段时间,用PyQt5写了几篇文章,关于Python自制一款炫酷音乐播放器.自定义动态壁纸.车牌自动识别系统.今天就继续给大家分享一个读者粉丝投稿的,关于上课点名的实战案例,一起来看看是如何实现 ...

  7. Java 随机点名器

    随机点名器,即在全班同学中随机的打印出一名同学名字. 要做的随机点名器,它具备以下3个内容:  存储所有同学姓名  总览全班同学姓名  随机点名其中一人,打印到控制台 案例需求分析 在全班同学中 ...

  8. java 点名器_java随机点名器 课程设计.docx

    java随机点名器 课程设计 目 录1 课程设计内容11.1 课程设计目的11.2 课程设计要求11.3 课程设计背景12 概要设计22.1程序模块结构图22.2 使用外部包的确定22.3 主界面模块 ...

  9. js实现复仇者联盟点名器

    随机点名器训练 题目:为了活跃班级气氛,在班级上张老师想通过一个随机点名器来随机抽取学 员回答问题,故按排你来使用 HTML+JavaScript 来实现如下图所示的随机点 名器,第一张图是随机点名器 ...

最新文章

  1. html5 canvas雨点打到窗玻璃动画
  2. Python-OpenCV 处理视频(二): 视频处理
  3. 使用django的权限管理系统permission
  4. JAVA系统和DOMINO通过LDAP集成方
  5. C# 数据类型及相互转换及常用基础
  6. 数据分析工具篇——HQL原理及函数逻辑
  7. ssm整合:这是第三次自己整合了。特写此文章当做笔记
  8. hdu 5083 Instruction (稍比较复杂的模拟题)
  9. Faster R-CNN算法详细流程
  10. NS3使用Eclipse配置
  11. 【高手推荐:主题下载】
  12. 今天看到居民负债率超过90%
  13. Python实现cosx函数(泰勒公式)
  14. POSCMS 短信设置
  15. 手机拍照实用技巧,实用的拍照方法和功能
  16. ChatGPT搞砸了~,如何使用VBA导出Word文档中的图片
  17. 【一文讲通】样本不均衡问题解决--上
  18. 新手如何选择 视频配音软件(文字转语音)
  19. 华为云服务器使用之搭建极简服务器
  20. Hexo(sakura)文章增添字数统计和阅读时长功能

热门文章

  1. excel超链接应用:快速生成目录的几个方法-下
  2. 伦敦 quant_伦敦统一用户组(LUUG)见面v1.0
  3. 6iypl8php,无线超方便 YPL TL-1/TL-3蓝牙音箱新品上市
  4. 美国大学计算机系学什么,最新美国大学计算机专业排名介绍
  5. 网易互娱AI研究工程师实习生一面——记人生的第一次面试
  6. 索尼BDP-S580回顾 - 一个最好的蓝光播放器在2011年
  7. 创建android studio桌面图标
  8. 网易2018校园招聘第3题
  9. Python学习笔记(5)
  10. 浅谈Unity中的文字显示