背景

这是一个真实的使用场景(2020.9.4)。

新生集训营中每半天都要2位学生写一篇感想。其中有5位同学在之前一天已主动报名写好了读后感。于是应该编写一个程序来为剩下的同学排序,选出幸运的同学来完成这个任务。

随机数

随机数有几种,一种是使用时间函数定出的随机数,程序示例见 【C++ 程序】 井字棋游戏(人 VS Lv1电脑)中Line 59-60。
另外,可以用直接电脑自带的随机数函数来生成随机数:

示例程序

#include <iostream>
#include <random>
using namespace std;int main()
{vector<unsigned> vec, vint;unsigned alr = 0, iter = 0;default_random_engine random;for (int i = 0; i != 1000; i++){unsigned ran = random() % 31 + 1;vec.push_back(ran);}cout << "Let's choose the lucky dogs." << endl;for (unsigned iter = 0; iter != 1000; iter++){if (vec[iter] != 5 && vec[iter] != 11 && vec[iter] != 12 && vec[iter] != 22 && vec[iter] != 26){unsigned id = 0;for (unsigned i = 0; i != iter; i++){if (vec[i] == vec[iter])id = 1;}if (id == 0){vint.push_back(vec[iter]);++alr;}}if (alr == 20) break;}for (unsigned j = 0; j != 20; j++){if (j % 4 == 0) cout << "\nSept." << j / 4 + 4 << ": ";if (j % 4 == 2) cout << "| ";if (vint[j] < 10)cout << "0";cout << vint[j] << " ";}cout << endl;return 0;
}

样例输出

分析

这个程序每次输出是一样的,因为这其实是个随机数表
此处没有用uniform_int_distribution<unsigned> u(max, min),因为似乎直接用%也挺方便的。
此方法详见我的博客 【笔记】 C++中 随机数各方式总结。

另一案例

#include <iostream>
#include <vector>
#include <random>
#include <ctime>
#include <string>
using namespace std;vector<unsigned> already{ 20,22,26,27 };int not_already(int n)
{unsigned cnt_n = 0;for (auto c : already)if (c != n)++cnt_n;if (cnt_n != already.size())return 0; // already chosenelse return 1; // not chosen
}int main()
{vector<unsigned> random_vec;srand((unsigned)time(NULL));int ran_temp = rand() % 10; // generate a random numberdefault_random_engine random;for (int i = ran_temp; i != 1000 + ran_temp; i++){unsigned ran = random() % 24 + 8; // generate another random numberrandom_vec.push_back(ran);}unsigned cnt = 0;unsigned index = 0;for (int i = 0; i != 1000; i++){if (cnt <= 5){if (i == 0)cout << "去书库数书的有:22,26,20,";if (not_already(random_vec[i])){cout << random_vec[i];already.push_back(random_vec[i]);string output = (cnt != 5) ? "," : "\n*如果没通知,12点05宿舍集合\n";cout << output;++cnt;}}else if (cnt <= 8){if (cnt == 6 && index == 0){cout << "\n宿舍围合接应的有:27,";++index;}if (not_already(random_vec[i])){cout << random_vec[i];already.push_back(random_vec[i]);string output = (cnt != 8) ? "," : "\n*收到我通知到宿舍门口集合\n";cout << output;++cnt;}}}return 0;
}

随机数表 or not

目标,输出三个-20到60的随机数和它们的平均数。

Example 1(实际就是随机数表)

#include <iostream>
#include <cstdlib>
using namespace std;int main()
{int a = rand() % 81 - 20; // 除81的余数从0到80int b = rand() % 81 - 20;int c = rand() % 81 - 20;cout << a << " " << b << " " << c << endl; // 这句可以看实际a,b,c的值cout << static_cast<double>(a + b + c) / 3 << endl; //先强制转成小数,否则是带余除法return 0;
}

输出示例:

每遍结果是一样的。

Example 2(不是随机数表)

#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;int main()
{srand(static_cast<unsigned>(time(NULL)));int a = rand() % 81 - 20; // 除81的余数从0到80int b = rand() % 81 - 20;int c = rand() % 81 - 20;cout << a << " " << b << " " << c << endl; // 这句可以看实际a,b,c的值cout << static_cast<double>(a + b + c) / 3 << endl; //先强制转成小数,否则是带余除法return 0;
}

输出示例:

改成这样就是根据时间的随机数,而每一遍时间是不一样的,因而随机数就不一样了。


ALL RIGHTS RESERVED © 2020 Teddy van Jerry
欢迎转载,转载请注明出处。


See also

Teddy van Jerry 的导航页
【C++ 程序】 井字棋游戏(人 VS 人)
【C++ 程序】 井字棋游戏(人 VS Lv1电脑)
【C++ 程序】 井字棋游戏(人 VS Lv2电脑)
【C++ 程序】 井字棋游戏(人 VS Lv3电脑)
【C++ 程序】 井字棋游戏(人 VS Lv3电脑)(战绩统计版)
【C++ 程序】 五子棋游戏(人 VS 人)
【C++ 程序】 移动迷宫游戏
【C++ 程序】 贪吃蛇游戏
【C++ 程序】 数字推盘游戏(15-puzzle)
【C++ 程序】 2048游戏
【C++ 程序】 井字棋游戏(人 VS 人)(EasyX 图形界面)
【C++ 程序】 井字棋游戏(人 VS Lv3电脑)(战绩统计版)(EasyX 图形界面)
【C++ 程序】 2048游戏(EasyX 图形界面)
【C++ 程序】 贪吃蛇游戏(EasyX 图形界面)

【C++ 程序】 随机数相关推荐

  1. 微信小程序随机数(自定义长度和类型)

    微信小程序随机数(自定义长度和类型) random.js // random.jsconst charts = ['0', '1', '2', '3', '4', '5', '6', '7', '8' ...

  2. c语言求阶乘和的流程图_C/C++编程笔记:C语言 rand() 随机函数,深入解析程序随机数!...

    各种编程语言返回的随机数(确切地说是伪随机数)实际上都是根据递推公式计算的一组数值,当序列足够长,这组数值近似满足均匀分布. C的标准函数库提供一随机数生成器rand(定义在stdlib.h),能返回 ...

  3. 40个Python入门小程序

    有不少同学学完Python后仍然很难将其灵活运用.我整理 37 个Python入门的小程序.在实践中应用Python会有事半功倍的效果. 例子1:华氏温度转换为摄氏温度 华氏温度转摄氏温度的公式:C ...

  4. 编程精粹 --Microsoft编写优质无错C程序秘诀

    献给我的妻子Beth, 以及我的双亲Joseph和Julia Maguire ────为了他们的爱和支持 序 1986年,在为几家小公司咨询和工作了10年之后为了获得编写Macintosh应用程序的经 ...

  5. 木桶排序算法_这才是你想要桶排序

    前面说的 昨天发的桶排序文章,有同学回复,确实有比较精明的同学,文章就是想提出一个比较简单的思路,本来想给自己的排序方式写个名字叫做"木桶排序",这篇文章讲解真正的桶排序,结合前面 ...

  6. C语言模拟回合制游戏 源码

    源码下载地址: http://download.csdn.net/detail/monkey_uan/5115921 刚学C的作品,略带稚气,仅供参考学习,版权所有. #include<stdi ...

  7. POCO C++库学习和分析 -- 序

    POCO C++库学习和分析 -- 序 1. POCO库概述: POCO是一个C++的开源库集.同一般的C++库相比,POCO的特点是提供了整一个应用框架.如果要做C++程序应用框架的快速开发,我觉得 ...

  8. python findall函数用法_Python--re模块的findall等用法

    1)正则表达式含义 . # 点可代表一切字符 \ # 起转义作用 [...] # 指代方括号中的任意字符 \d # 指代数字0-9 \D # 指代非数字 \s # 指代一切空格,包括tab制表符.空格 ...

  9. python随机选取字符串_Python random模块sample、randint、shuffle、choice随机函数概念和应用...

    Python标准库中的random函数,可以生成随机浮点数.整数.字符串,甚至帮助你随机选择列表序 列中的一个元素,打乱一组数据等. random中的一些重要函数的用法: 1 ).random() 返 ...

  10. 简单智能远程控制服务器课题

    一.项目概述:简单智能远程监控     功能: 服务器端: 1.服务器端利用随机数模拟向串口读取传感数据,需要模拟的传感数据要求有:温度.湿度.光 照.室内噪音度等等. 2.服务器要求在数据保中保存有 ...

最新文章

  1. oracle分页的使用,oracle中分页的实现方式.rownum的使用
  2. 动词ing形式的5种用法_课后文档:英语语法思维第7课动词的5个形式的用法
  3. Oracle-PFILE和SPFILE解读
  4. 2、压滤机现场图片和组成部分详细构造
  5. keepalived nginx 双机热备图文讲解
  6. java组合与继承始示例_Java示例中的组合
  7. 第一次作业:阅读优秀博文感想
  8. mike21换成计算机名称,[转载]mike21基本介绍
  9. caj文件打不开显示内存不足_U盘能显示文件大小但打开没有任何文件 - 卡饭网...
  10. 电机系列(1) - foc最基本原理、clark变换 、park变换、附代码
  11. mac 启用夜神模拟器
  12. 【ENVI条件下的GF6-WFV数据处理相关问题】——负值问题
  13. 高级语言程序设计(c语言描述) 陆黎明 朱媛媛 练习答案,高级语言程序设计(c语言描述) 陆黎明 朱媛媛 练习答案...
  14. Gartner2015新兴技术炒作曲线图
  15. 自定义 kubectl-plugin
  16. CSS 边框 圆角 盒子阴影 圆角 solid dotted dashed
  17. orCAD中的文本编辑框如何换行?
  18. linux下kegg注释软件,科学网—生物信息——kegg分析的kobas软件的安装与使用 - 孙朋川的博文...
  19. 小雉配置--支持向上向下兼容的 配置文件 兼容性 设计
  20. 天太机器人吴志诚_天太机器人:轻集成——国产机器人本体企业突围之路

热门文章

  1. 布斯(Booth)乘法
  2. 2345浏览器怎么换主页 2345浏览器换主页教程
  3. BZOJ 3238 [Ahoi2013]差异
  4. 利用程序随机构造N个已解答的数独棋盘
  5. 沃尔沃自动驾驶卡车Vera开始在瑞典港口运货 最高时速40公里
  6. 征战希洛克集卡活动显示服务器没角色,希洛克征战模式
  7. C语言--使用指针实现删除字符串中的空格
  8. 法官批准离婚申请 布兰妮正式恢复“单身”(图)
  9. 【老保姆教程】:Tesseract-OCR图片文字识别
  10. 越多的人入局棋牌游戏开发行业,游戏产品突出竞技元素