C++ 随机函数----谈rand() 和 srand() 体会
C++ 函数 ---- 随机 体会 rand
2023-09-14 08:56:48 时间
在很多时候,程序中会用到随机数,在C++中就要用到专门用以产生随机数的标准库函数rand(),它会产生一个无符号整数,范围在0~32767,即两字节16位的整数最大值。而GNU C++产生的随机数范围为2147483647。 范围中的每一个数在每次随机调用rand时都有相同的概率被选中。
调用时 ,需要引用头文件 cstdlib ,示例代码
//掷20次筛子,每五个一行输出
#include "stdafx.h"
#include iostream
using std::cout;
using std::endl;
#include iomanip
using std::setw ;
#include cstdlib
using std::rand;
int _tmain(int argc, _TCHAR* argv[])
{
for(int i=1;i i++)
{
cout setw(10) (1+rand()%6);//比例缩放,6称为缩放因子
if(i%5==0)
{
cout endl;
}
}
return 0;
}
当我们多次执行后,我们会发现每次执行的结果是一样的,既然是随机,这是为什么呢??? 这是因为,rand()产生的实际上是一个伪随机数,如果要确保每次产生的都不一样,我们需要引用一个专门为rand设置随机化种子的函数srand().示例代码如下: #include "stdafx.h"
#include iostream
using std::cout;
using std::endl;
using std::cin ;
#include iomanip
using std::setw ;
#include cstdlib
using std::rand;
using std::srand;
int _tmain(int argc, _TCHAR* argv[])
{
unsigned int seed;
cout "输入随机化种子(它是一个无符号整数)";
cin seed;
srand(seed);
for(int i=1;i i++)
{
cout setw(10) (1+rand()%6);//比例缩放,6称为缩放因子
if(i%5==0)
{
cout endl;
}
}
return 0;
}
结果1种子为:67 2种子为76 3当再次执行后,种子仍然为76的时候,结果和上次执行的一样: OK,,,,
C++中rand随机数的用法 C++标准函数库提供一随机数生成器rand,返回0-RAND_MAX之间均匀分布的伪随机整数。 RAND_MAX必须至少为32767。rand()函数不接受参数,默认以1为种子(即起始值)。 随机数生成器总是以相同的种子开始,所以形成的伪随机数列也相同,失去了随机意义。(但这样便于程序调试)
【C++要笑着学】从零开始实现日期类 | 体会代码的复用 | 提供完整代码(二) 啊,朋友们好啊。我是柠檬叶子C,上一章我们讲解了运算符重载,本篇将手把手从零开始一步步实现一个Date类,将会对每个步骤进行详细的思考和解读。
C++实用编程第一期:通过文件操作和rand随机函数制作打卡则运势程序 我们在洛谷,云栖社区都可以看到打卡签到测运势,那么今天我们就来开发这个程序。 首先,我们来分析一下: 1.打卡一天只有一次,所以在我们测运势时不能测第二次。 2.所有的运势要存在一个文件中。 3.我们要用另一个文件来存储今日运势。
2014秋C++第14周项目5参考-体会棋盘游戏 课程主页在http://blog.csdn.net/sxhelijian/article/details/39152703,课程资源在云学堂“贺老师课堂”同步展示,使用的帐号请到课程主页中查看。 【项目5-体会棋盘游戏中的数据存储】定义一个8行8列的二维数组a[8][8]。(1)为二维数组中的数据赋50以内的随机数(程序模板中setdata()函数已经完成,利用产生随机数的系统函数实现),可
C++程序设计实践学材系列(23)——1.5.3 体会“自顶向下,逐步求精”思想 回到系列文章的目录——[系列文章目录] 回到本章目录——[第1章目录] 1.5.3 体会“自顶向下,逐步求精”思想 接下来,我们的胃口开始大了。 提出来一种考虑问题的思路,其实已经蕴涵在例1.7输出7行星号的程序中了。 这种解决问题的思维方式是——“自顶向下,逐步求精”。 要输出的是: 写出的程序(例程ch1-13.cpp),循环7次。每次的循环,输出1行。因此,输出了7行,
C++第17周项目1——体会函数参数传递 课程首页地址:http://blog.csdn.net/sxhelijian/article/details/7910565 【项目1-体会函数参数传递】1、下面三段程序都试图通过定义函数,实现实际参数在必要时的交换,哪些能够实现,哪些不能实现?通过运行程序和单步执行,让自己对这一过程更加清楚,然后请在博文中给出明确的回答,并用你自己的话展开描述(自己的话,但要用术语,用术语讲技术的事,是必
C++ STL学习之【vector的使用】 vector 是表示可变大小数组的序列 容器,其使用的是一块 连续 的空间,因为是动态增长的数组,所以 vector 在空间不够时会扩容;vector 优点之一是支持 下标的随机访问,缺点也很明显,头插或中部插入效率很低,这和我们之前学过的 顺序表 性质很像,不过在结构设计上,两者是截然不同的
C++ STL学习之【string类的模拟实现】 string 本质上就是一个专注于存储字符的顺序表,使用起来很方便;但在模拟实现 string 时,有许多值得注意的点,下面就来看看 string 类是如何诞生的吧
using std::cout;
using std::endl;
#include iomanip
using std::setw ;
#include cstdlib
using std::rand;
int _tmain(int argc, _TCHAR* argv[])
{
for(int i=1;i i++)
{
cout setw(10) (1+rand()%6);//比例缩放,6称为缩放因子
if(i%5==0)
{
cout endl;
}
}
return 0;
}
当我们多次执行后,我们会发现每次执行的结果是一样的,既然是随机,这是为什么呢??? 这是因为,rand()产生的实际上是一个伪随机数,如果要确保每次产生的都不一样,我们需要引用一个专门为rand设置随机化种子的函数srand().示例代码如下: #include "stdafx.h"
#include iostream
using std::cout;
using std::endl;
using std::cin ;
#include iomanip
using std::setw ;
#include cstdlib
using std::rand;
using std::srand;
int _tmain(int argc, _TCHAR* argv[])
{
unsigned int seed;
cout "输入随机化种子(它是一个无符号整数)";
cin seed;
srand(seed);
for(int i=1;i i++)
{
cout setw(10) (1+rand()%6);//比例缩放,6称为缩放因子
if(i%5==0)
{
cout endl;
}
}
return 0;
}
结果1种子为:67 2种子为76 3当再次执行后,种子仍然为76的时候,结果和上次执行的一样: OK,,,,
C++中rand随机数的用法 C++标准函数库提供一随机数生成器rand,返回0-RAND_MAX之间均匀分布的伪随机整数。 RAND_MAX必须至少为32767。rand()函数不接受参数,默认以1为种子(即起始值)。 随机数生成器总是以相同的种子开始,所以形成的伪随机数列也相同,失去了随机意义。(但这样便于程序调试)
【C++要笑着学】从零开始实现日期类 | 体会代码的复用 | 提供完整代码(二) 啊,朋友们好啊。我是柠檬叶子C,上一章我们讲解了运算符重载,本篇将手把手从零开始一步步实现一个Date类,将会对每个步骤进行详细的思考和解读。
C++实用编程第一期:通过文件操作和rand随机函数制作打卡则运势程序 我们在洛谷,云栖社区都可以看到打卡签到测运势,那么今天我们就来开发这个程序。 首先,我们来分析一下: 1.打卡一天只有一次,所以在我们测运势时不能测第二次。 2.所有的运势要存在一个文件中。 3.我们要用另一个文件来存储今日运势。
2014秋C++第14周项目5参考-体会棋盘游戏 课程主页在http://blog.csdn.net/sxhelijian/article/details/39152703,课程资源在云学堂“贺老师课堂”同步展示,使用的帐号请到课程主页中查看。 【项目5-体会棋盘游戏中的数据存储】定义一个8行8列的二维数组a[8][8]。(1)为二维数组中的数据赋50以内的随机数(程序模板中setdata()函数已经完成,利用产生随机数的系统函数实现),可
C++程序设计实践学材系列(23)——1.5.3 体会“自顶向下,逐步求精”思想 回到系列文章的目录——[系列文章目录] 回到本章目录——[第1章目录] 1.5.3 体会“自顶向下,逐步求精”思想 接下来,我们的胃口开始大了。 提出来一种考虑问题的思路,其实已经蕴涵在例1.7输出7行星号的程序中了。 这种解决问题的思维方式是——“自顶向下,逐步求精”。 要输出的是: 写出的程序(例程ch1-13.cpp),循环7次。每次的循环,输出1行。因此,输出了7行,
C++第17周项目1——体会函数参数传递 课程首页地址:http://blog.csdn.net/sxhelijian/article/details/7910565 【项目1-体会函数参数传递】1、下面三段程序都试图通过定义函数,实现实际参数在必要时的交换,哪些能够实现,哪些不能实现?通过运行程序和单步执行,让自己对这一过程更加清楚,然后请在博文中给出明确的回答,并用你自己的话展开描述(自己的话,但要用术语,用术语讲技术的事,是必
C++ STL学习之【vector的使用】 vector 是表示可变大小数组的序列 容器,其使用的是一块 连续 的空间,因为是动态增长的数组,所以 vector 在空间不够时会扩容;vector 优点之一是支持 下标的随机访问,缺点也很明显,头插或中部插入效率很低,这和我们之前学过的 顺序表 性质很像,不过在结构设计上,两者是截然不同的
C++ STL学习之【string类的模拟实现】 string 本质上就是一个专注于存储字符的顺序表,使用起来很方便;但在模拟实现 string 时,有许多值得注意的点,下面就来看看 string 类是如何诞生的吧
相关文章
- C++ 中using 的使用
- 经典中的品味:第二章 C++基本的对象,类型和值(上)
- C++非类型模板参数
- C++ 重载操作符<<实现cout定位输出以及设置颜色:cout<<Goto(x,y)<<setC(color)<<123<<cr;
- C++ 多种取整函数的使用和区别: ceil() floor() round() trunc() rint() nearbyint()
- C++ vector 删除和排序的相关函数
- C语言/C++常见习题问答集锦(七十一) 之创建链表与洗牌发牌
- c++ string头文件
- VS中c++文件调用c 函数 ,fatal error C1853 预编译头文件来自编译器的早期版本号,或者预编译头为 C++ 而在 C 中使用它(或相反)
- 【华为OD机试 2023最新 】 网上商城优惠活动(C++)
- 【华为OD机试 2023最新 】异常的打卡记录(C++ 100%)
- 【华为OD机试 2022】 约瑟夫问题(C++ Java JavaScript Python)
- 解答私信@被c++折磨头秃的花季美少女 //C++ 利用指针数组输入10个单词,编写函数对10个单词进行排序并输出,要求判断是否有相同的单词,如果有相同的单词在输出时该单词只输出一次。
- 解答私信@被c++折磨头秃的花季美少女 //C++ 写一个带命令行参数的程序,可以实现将参数求和、求平均值以及排序之后输出(参数的数量不确定)。
- C++吃早饭排队问题
- C++ 编码优化 | 减少冗余拷贝或赋值
- C++结构体可放在函数内部和外部
- C++引用作为函数参数
- C++友元函数和友元类(二)
- c++ static 存储类
- VC++ CopyFile函数使用方法
- C++ 排序函数 sort(),qsort()的使用方法
- Effective C++:条款35:考虑virtual函数以外的其它选择
- VC++如何使用C++ STL标准模板库中的算法函数(附源码)
- C++ 数据封装
- C/C++之宏、内联函数和普通函数的区别
- 动态数组C++实现
- C++ 反汇编:关于Switch语句的优化措施
- C++中虚函数多态实现的原理刨析
- C++算法之更加复杂的数据结构