zl程序教程

您现在的位置是:首页 >  后端

当前栏目

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 类是如何诞生的吧