最新要闻
- dotnetfx35无法安装_dotnetfx35
- 游客手机掉西湖被要1500元打捞费 景区:简单打捞不收费-全球观察
- 员工朋友圈未发广告被罚1万且开除:法院判赔5万 当前短讯
- 印度捷行航空申请破产 原因想不到:普惠发动机故障太多-视点
- 【e公司观察】原料涨价 锂电行业为何振奋不已?|当前看点
- 四川自贡一餐厅吃饭收15元空调费 店家:相当于雅间费-全球今头条
- 各主要高速公路、国省道干线交通总体安全顺畅 最新消息
- 有钱人为何在意电动车电费?李想用超级富豪朋友习惯解释原因-全球讯息
- 环球速看:格科微: 格科微有限公司关于公司实际控制人、董事长、首席执行官提议公司回购股份的公告
- 上海妍秀国际医疗美容诊所医生以及擅长项目推荐
- 报道:上半年最后一个假 端午节放3天:假期后需连上6天班
- 《街霸6》新角色韩蛛俐介绍片:疯美人脚法了得-全球观天下
- 最新快讯!三星宣布多款旧设备停止更新支持
- 清仓特价 森马板鞋/运动鞋39元起、T恤29元起-要闻速递
- 今日快讯:又一个小米6钉子户消失 米粉给妈妈换小米13 雷军点赞
- “广州市十佳科普使者”出炉|全球观察
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
随机造数据的技巧总结
以下是一个简单的使用 C++11 新特性生成随机数数据的程序示例:
#include #include // 引入随机数生成器的头文件using namespace std;int main(){ // 创建 C++11 随机数生成器 mt19937_64 rng(std::random_device{}()); // 使用随机数生成器创建均匀分布 uniform_int_distribution dist(0, 100); // 随机生成 10 个整数并输出它们 for (int i = 0; i < 10; i++){ int random_num = dist(rng); cout << random_num << " "; } cout << endl; return 0;}
这个程序用到了 C++11 的两个新特性:随机数生成器和随机分布。std::mt19937_64
是生成随机数的类,可以用 std::random_device
类来获取系统的随机种子,然后把它作为构造函数中的参数传给 std::mt19937_64
的对象来生成随机数。std::uniform_int_distribution
则是一个随机的整数分布,它需要两个参数来构造一个均匀分布:分别是随机数的范围的最小值和最大值。
(资料图片)
当然也可以用 rand()
函数生成随机数。但在C++11中已经有更加强大的随机数生成器(如上文),推荐使用更加先进的方式生成随机数。rand()
函数会使用计算机的时间作为随机种子,因此可能会存在一些问题,具体如下:
rand() 可能不够随机:使用 rand() 接口会有产生伪随机数的风险,而 C++11 标准引入了更加随机的随机数生成器;
rand() 生成随机数的范围受限:rand() 生成的随机数范围是 [0, RAND_MAX] ,而且计算 RAND_MAX 时,可能会限制随机数的分布均匀性。
下面是一个使用 rand()
函数生成区间内随机数的示例代码:
#include #include // 引入 srand() 和 rand() 函数using namespace std;signed main(void){ const int kLowerBound = 1; // 区间下限 const int kUpperBound = 100; // 区间上限 const int kDataNum = 20; // 需要生成的数据量 // 设置种子 srand(time(nullptr));//或者srand(time(NULL))也行,NULL换为0也可以。 // 生成随机数 int data[kDataNum]; for (int i = 0; i < kDataNum; i++) data[i] = rand() % (kUpperBound - kLowerBound + 1) + kLowerBound; // 输出生成的数据 for (int i = 0; i < kDataNum; i++) cout << data[i] << " "; cout << std::endl; return 0;}
上述代码中,我们已经设置种子并使用 rand()
函数生成了区间 [1, 100] 内的随机数,并将它们存储在了一个数组(data
)中。如果需要生成非整数的区间内的随机数,可以将 rand() % (kUpperBound - kLowerBound + 1) + kLowerBound
改为较为通用的式子 ((double) rand() / RAND_MAX) * (kUpperBound - kLowerBound) + kLowerBound
。
总之,虽然在 C++11 引入的随机数库中有更先进、可靠、易用的随机数生成器,但是这里提供的方法仍然是缺乏更可靠性、更灵活性的解决方案之一。
上面的程序将生成 10 个 0 到 100 之间的随机整数并输出它们。你可以根据需要进行修改,例如改变随机数的范围或者将生成的随机数存储到一个数组中。
如果给定的得分表有特殊性质,例如排序好的、连续递增或递减的等,我们可以通过这些特殊性质来快速地生成多组数据。
以一个简单的例子来说明,如果给定的得分表是一个递增的数列,我们可以按照以下方式构造等多组数据:
- 随机生成一个数作为第一个数。
- 从第二个数开始,每个数比前一个数多增加若干个随机的增量,增量的大小可以根据需要自己设定,可以是一个固定的数,也可以是一个随机数。
- 重复第2步,直到生成需要的数据量。
以下是一个使用 C++ 的程序示例:
#include #include // 引入随机数生成器的头文件using namespace std;signed main(void){ const int kDataNum = 10; // 需要生成的数据量 int data[kDataNum]; // 保存生成的数据的数组 // 随机生成第一个数 random_device rd; mt19937 gen(rd()); uniform_int_distribution<> dis(0, 100); data[0] = dis(gen); // 生成后面的数 uniform_int_distribution<> delta_dis(1, 10); // 增量取 1 到 10 之间的随机数 for (int i = 1; i < kDataNum; i++) data[i] = data[i - 1] + delta_dis(gen); // 输出生成的数据 for (int i = 0; i < kDataNum; i++) cout << data[i] << " "; cout << endl; return 0;}
这个程序将生成一个长度为 10 的递增数列,每个数之间的增量随机取 1 到 10 之间的整数。你可以根据需要修改随机数的范围和增量的大小来生成其他类型的数据。除了递增的数列外,类似的方式也可以用于递减数列、正负交替等有特殊性质的得分表。
下面以不同的得分表特殊性质为例,展示如何快速生成多组数据。
- 递增的得分表
#include #include // 引入随机数生成器的头文件using namespace std;signed main(void){ const int kDataNum = 20; // 需要生成的数据量 int data[kDataNum]; // 保存生成的数据的数组 // 随机生成第一个数 random_device rd; mt19937 gen(rd()); uniform_int_distribution<> dis(0, 100); data[0] = dis(gen); // 生成后面的数 uniform_int_distribution<> delta_dis(1, 10); // 增量取 1 到 10 之间的随机数 for (int i = 1; i < kDataNum; i++) data[i] = data[i - 1] + delta_dis(gen); // 输出生成的数据 for (int i = 0; i < kDataNum; i++) cout << data[i] << " "; cout << endl; return 0;}
- 递减的得分表
#include #include // 引入随机数生成器的头文件using namespace std;signed main(void){ const int kDataNum = 20; // 需要生成的数据量 int data[kDataNum]; // 保存生成的数据的数组 // 随机生成第一个数 random_device rd; mt19937 gen(rd()); uniform_int_distribution<> dis(0, 100); data[0] = dis(gen); // 生成后面的数 uniform_int_distribution<> delta_dis(1, 10); // 减量取 1 到 10 之间的随机数 for (int i = 1; i < kDataNum; i++) data[i] = data[i - 1] - delta_dis(gen); // 输出生成的数据 for (int i = 0; i < kDataNum; i++) cout << data[i] << " "; cout << endl; return 0;}
- 奇数偶数交替的得分表
#include #include // 引入随机数生成器的头文件using namespace std;signed main(void){ const int kDataNum = 20; // 需要生成的数据量 int data[kDataNum]; // 保存生成的数据的数组 // 随机生成第一个数 random_device rd; mt19937 gen(rd()); uniform_int_distribution<> dis(0, 100); data[0] = dis(gen) % 2; // 取出第一个数的奇偶性 // 生成后面的数 uniform_int_distribution<> delta_dis(1, 10); // 取 1 到 10 之间的随机数 for (int i = 1; i < kDataNum; i++) data[i] = data[i - 1] + (i % 2 == 0 ? delta_dis(gen) : -delta_dis(gen)); // 输出生成的数据 for (int i = 0; i < kDataNum; i++) cout << data[i] << " "; cout << endl; return 0;}
- 以一定规律重复的得分表
#include using namespace std;signed main(){ const int kDataNum = 20; // 需要生成的数据量 int data[kDataNum]; // 保存生成的数据的数组 // 生成数据 for (int i = 0; i < kDataNum; i++) data[i] = i % 3; // 每3个数重复一次 // 输出生成的数据 for (int i = 0; i < kDataNum; i++) cout << data[i] << " ";cout<
也可以生成随机树,序列,图等。
下面是使用 std::mt19937_64
随机生成序列、树和图的示例代码:
- 随机生成序列
#include #include #include int main(){ const int kDataNum = 20; std::random_device rd; std::mt19937_64 gen(rd()); std::uniform_int_distribution<> dis(1, 100); std::vector data(kDataNum); for (int i = 0; i < kDataNum; i++) { data[i] = dis(gen); } for (int i = 0; i < kDataNum; i++) { std::cout << data[i] << " "; } std::cout << std::endl; return 0;}
- 随机生成树、图生成随机树的常用方法是随机生成一张图,然后选取一颗生成树。下面是使用C++的STL库中的
std::mt19937_64
生成随机图和随机树的示例代码:
#include #include #include #include const int N = 10; //图中节点数int main() { std::mt19937_64 eng{std::random_device{}()}; std::uniform_int_distribution dist(0, N - 1); //生成随机整数分布 //生成图 std::vector> graph(N, std::vector(N, 0)); for (int i = 0; i < N; i++) { for (int j = 0; j < i; j++) { graph[i][j] = graph[j][i] = dist(eng) % 2; //1/2的概率连边 } } //打印图 std::cout << "Graph:" << std::endl; for (const auto &row : graph) { for (int x : row) { std::cout << x << " "; } std::cout << std::endl; } //生成随机树 std::vector visited(N, 0); std::vector tree; tree.push_back(0); visited[0] = 1; while (tree.size() < N) { std::vector candidates; for (int i : tree) { for (int j = 0; j < N; j++) { if (graph[i][j] && !visited[j]) { candidates.push_back(j); } } } if (candidates.empty()) { std::cerr << "Graph is not connected, cannot generate a tree." << std::endl; return 1; } std::shuffle(candidates.begin(), candidates.end(), eng); //打乱候选节点顺序 int new_node = candidates.front(); tree.push_back(new_node); visited[new_node] = 1; } //打印生成的随机树 std::cout << "Tree: "; for (int x : tree) { std::cout << x << " "; } std::cout << std::endl; return 0;}
这个程序使用了C++的STL库中的std::mt19937_64
作为随机数生成器,以及std::uniform_int_distribution
作为生成随机整数的分布,生成了一个大小为N
的随机图和一颗以0为根节点的随机树。程序输出的结果如下:
Graph:0 0 1 1 0 1 0 0 1 0 0 0 1 0 0 1 1 0 1 0 1 1 0 0 1 0 1 0 1 0 1 0 0 0 0 0 1 1 0 0 0 0 1 0 0 1 0 0 0 0 1 1 0 0 1 0 0 0 0 1 0 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 Tree: 0 2 1 6 3 8 5 4 9 7
结语:总之,随机数使用的方法很多,还请根据读者由实际情况自己思考体会。
关键词:
KubeVela 稳定性及可扩展性评估_环球微动态
随机造数据的技巧总结
dotnetfx35无法安装_dotnetfx35
游客手机掉西湖被要1500元打捞费 景区:简单打捞不收费-全球观察
员工朋友圈未发广告被罚1万且开除:法院判赔5万 当前短讯
印度捷行航空申请破产 原因想不到:普惠发动机故障太多-视点
环球聚焦:appuploader 入门使用
环球快看点丨1、etcd基础介绍
【实变函数】01 - 更合理的积分
每日信息:关于如何使用pandas将不同的数据写入到同一个Excel的不同Sheet表中
【世界新视野】1159 Structure of a Binary Tree + 根据前序和中序构建二叉树+ 层序遍历模板复习
【e公司观察】原料涨价 锂电行业为何振奋不已?|当前看点
四川自贡一餐厅吃饭收15元空调费 店家:相当于雅间费-全球今头条
各主要高速公路、国省道干线交通总体安全顺畅 最新消息
热讯:写几行代码,了解响应式原理
第139篇:JS数组常用方法(map(),reduce(),foreach())
83.赋值运算符
IMF:中国将成为今年亚太地区经济增长关键驱动因素
有钱人为何在意电动车电费?李想用超级富豪朋友习惯解释原因-全球讯息
环球速看:格科微: 格科微有限公司关于公司实际控制人、董事长、首席执行官提议公司回购股份的公告
【2023 · CANN训练营第一季】昇腾AI入门Pytorch
世界微动态丨23 网络数据在内核中流转
ZooKeeper 避坑指南: ZooKeeper 3.6.4 版本 BUG 导致的数据不一致问题
5月3日全国铁路迎来返程客流高峰 预计发送旅客1935万人次 世界独家
上海妍秀国际医疗美容诊所医生以及擅长项目推荐
报道:上半年最后一个假 端午节放3天:假期后需连上6天班
《街霸6》新角色韩蛛俐介绍片:疯美人脚法了得-全球观天下
Bash—source命令&export命令&bashrc文件
最新快讯!三星宣布多款旧设备停止更新支持
清仓特价 森马板鞋/运动鞋39元起、T恤29元起-要闻速递
今日快讯:又一个小米6钉子户消失 米粉给妈妈换小米13 雷军点赞
22 URL到网卡:网络数据流动
“广州市十佳科普使者”出炉|全球观察
五一余额不足 最后一天返程现场排长队 网友:凌晨出门照堵不误
“插队婆孙”被做成恶搞表情包:如此“网暴”是否合适?
【全球聚看点】OpenAI API keys 的申请和测试小结
母子争吵儿子走丢 机场民警15分钟帮找到孩子|播资讯
【世界速看料】最便宜的16GB显存显卡出现了!AMD、NVIDIA统统靠边站
焦点报道:苹果、谷歌起草追踪设备行业规范:打击滥用定位功能
当前短讯!实惨!男子拍演唱会:激光导致手机摄像头直接报废
Realme 11 Pro+ 5G 曝光 在5月10日发布
66元的的钟薛高在东北只要3.8元一根!商家回应
开眼!丰田为混动车申请“手动挡”专利:只为保留驾驶乐趣 环球热推荐
游客停车31小时被收640元:明码标价 但已退还
Blazor学习之旅系列总结目录
国铁集团郑州局预计3日客流创历史新高
小学生写人作文开头结尾集锦_小学生写人作文-观速讯
【天天时快讯】阿维塔定金72小时内可退成空话 店长:“已锁单”
汽车盗窃案上升548% 纽约市免费发放500个苹果AirTag应对
【当前独家】 男子吐槽在景区停车场一路捡到26个螺丝钉 官方回应
青海省西宁市城西区西川南路消防救援站站长助理玛尼坚——磨砺技能 守护平安(劳动者之歌)
多地消费市场见闻
世界资讯:客户抛弃雷克萨斯LM来买 腾势D9 4月销量10526辆
19.99万元期待落空 打价格战的特斯拉为何突然涨价:利润下滑
观速讯丨Intel AVX-512指令集要回来!残血版?AMD正尽情享受
世界最资讯丨艾玛·沃森曝光新写真 透露2024年开拍新电影
24小时不打烊,365天对外接待……“临汾好办”不要太方便! 环球播资讯
每日热文:前缀和
可怜的欧美!RTX 3070上市两年半 终于破发|今头条
环球头条:雷蛇噬魂鲨极速版耳机发布:50mm驱动单元、30小时续航
别只会“王者峡谷五日游” 这几款游戏才是假期最佳解
每日关注!4月新能源销量:比亚迪、埃安、理想全线杀疯
全球要闻:巨亏236亿元!三星内存、闪存要减产25%
天天热头条丨“天空之城”游人如织
学系统集成项目管理工程师(中项)系列16b_风险管理(下)
世界观点:4年来首次下滑 AMD发布Q1季度财报:锐龙处理器成重灾区
五菱缤果营销比亚迪海豚话术曝光:颜值高、空间大
【速看料】五一后机票价格暴跌 飞三亚从2800降到280元 专家表态:很正常
联合国秘书长:呼吁以色列停止行政拘留的做法|全球观焦点
python图像处理库
Java读取数据库表
世界今热点:徊的拼音_徊怎么组词
流媒体时代谋生艰难!好莱坞编剧15年来将首次罢工
为何插电混动车主爱在外充电 理想高管分析:薅羊毛感觉爽
当前资讯!司机等红绿灯时看手机被罚200扣3分 车是静止状态:网友吵翻 但事实没错
NV一代神卡卷土重来!Steam新报告:RTX 40降价仍没存在感_当前热议
五一想在户外看电影、选购投影仪一定要注意这几点
浙商证券研究所所长助理陈杭离职:否认网传800万年薪,专心处理舆论_世界热资讯
81.数组 全球热门
Win11“颠覆性”功能被遗弃:失效三个月仍被微软无视
嘴硬还是明智?丰田高管:电动汽车技术不成熟、混动才实用
同花顺ai机构活跃度指标公式源码_活跃度100
Android-图片压缩(二)-纯干货
C# 常量 结构体 委托 热门看点
喝的二五八万是什么意思_二五八万是什么意思
性能达SteamDeck两倍!华硕ROG Ally掌机先行开箱来了
奇葩!插队发飙者称是换队 网友吐槽发飙发泼有理:景区称仍算插队
天天热议:手机就能跑!开源AI机器人MLC LLM发布:无需联网
喜欢玩手机 那就活该单身
沃尔沃首款全电动汽车现已准备好接触其首批英国客户
降价伤人伤己?特斯拉国内外突然涨价背后:实为去库存|每日短讯
ChatGPT导致信息泄露后:三星将开发内部AI工具
女子淄博吃烧烤排不上队被投喂饱 山东太热情:人民日报点赞
11.迷宫问题(BFS 储存路径)
哈弗的新款Boxy SUV由前路虎设计师设计|世界球精选
韩国大学生吃掉天价香蕉艺术品 称是行为艺术!原作者回应了 每日速读
焦点快报!最高热效率达44%:五菱柳机自研高热效发动机点火成功
私拆承重墙高楼已加固 居民称胆真大:多层裂纹被掩盖 还敢住吗
坏账损失核算方法有_坏账损失核算方法 世界即时看
卖不动很无奈?NVIDIA对RTX 4090官降:今年第三次了