当前位置:首页 > 谈天说地 > 正文内容

c生成随机数代码(const类型变量)

34资源网2周前 (01-14)谈天说地13

Matlab内置了五种随机函数:

  • rand:生成在(0, 1)之间均匀分布的随机数
  • randn:生成均值为0,方差为1的标准正态分布的随机数
  • randi(imax):生成在[1, imax] 均匀分布的伪随机整数
  • randsrc(m, n, [alphabet; prob]):生成一个m-by-n的矩阵,矩阵的元素从alphabet里抽取,alphabet每个元素被抽中的概率由prob指定。
  • randperm(n):生成一个1到n的随机顺序。

而C++中要生成随机数,通常需要使用rand()和srand()两个函数。

对于C++ 11之前的随机数生成,只需rand/srand这两函数即可,C++11之后提供了更多的选择和东西,这里暂且不表。

1、rand函数
int rand(void);

rand()函数返回一个 0 ~ RAND_MAX 之间的整数。RAND_MAX 是一个定义在 <cstdlib> 的常数。

该函数返回的数字实际上是用算法生成的,实际上并不是随机的。它是根据种子生成的,根据不同的种子产生不同的随机序列。系统默认的种子是1,所以说每次使用的随机序列都是固定的。

比如下面这段代码:

#include <iostream>
using namespace std;

int main()
{
    cout << "RAND_MAD: " << RAND_MAX << endl;
    int x = rand();
    cout << "x: " << x << endl;
  
    return 0;
}

运行结果如下图所示,可以看出,每次运行的结果,x 的值都是固定的。

2、srand函数

要想使每次运行时变量 x 的值都不同,就必须使它的种子随机,这时就需要用到srand函数。

void srand(unsigned int seed);

srand()函数就是用来设置rand()函数的种子的。根据不同的输入参数可以产生不同的种子。通常使用time函数作为srand函数的输入参数。

time(NULL);

time函数会返回1970年1月1日至今所经历的时间(以秒为单位)。

在使用 rand() 函数之前,srand() 函数要先被调用,并且在整个程序中只需被调用一次。代码如下:

#include <iostream>
using namespace std;

int main()
{
    srand(time(0));
    int x = rand();
    cout << "x: " << x << endl;
  
    return 0;
}

运行结果如下:

注意:time函数会返回的是1970年1月1日至今所经历的时间(以秒为单位),若你手速足够快,在1s内能够执行多次,即time函数返回的值相同,x 的值也会相同。

3、指定随机数的范围

在实际应用中,通常需要要将随机数的范围限制在 1 到某个值 max 之间,则可以使用以下公式:

int var = rand() % max + 1;

求余数运算符(%)可以获得整除之后的余数。如当 max 为 6 时,余数将是 0 〜 5,给余数加 1 即可转换为 1 ~ 6。

#include <iostream>
using namespace std;

int main()
{
    srand(time(0));
    int x = rand() % 6 + 1;
    cout << "x: " << x << endl;
  
    return 0;
}

运行结果如下:

PS:计算机是一个可预测的系统,因此不可能通过算法来产生真正的随机数。在计算机中,所谓的随机数通常都是伪随机数,即通过随机算法计算出来的,可以被近似看作随机数的数值。

常见的随机数算法有线性同余法(Linear Congruential Generator)、梅森旋转法(Mersenne twister)等。

看完文章,还可以用支付宝扫描下面的二维码领取一个支付宝红包,目前可领1-88元不等

支付宝红包二维码

除了扫码可以领取之外,大家还可以(复制 720087999 打开✔支付宝✔去搜索, h`o`n.g.包哪里来,动动手指就能领)。

看下图所示是好多参与这次活动领取红包的朋友:

支付宝红包

扫描二维码推送至手机访问。

版权声明:本文由34楼发布,如需转载请注明出处。

本文链接:https://www.34l.com/post/5476.html

分享给朋友:

相关文章

开一家一元水洗店创业的点子分享

开一家一元水洗店创业的点子分享

洗衣机是很多人家中必备的电器。但是在很多经济欠发达的地区,也有很多人家里没有洗衣机。在兰州市一些城乡接合部,一些挂有“1元洗衣店”牌子的小店,给居民们提供便利的同时,已悄然成为一种新兴的赚钱行业。1元店老板马维德就是他们中的佼佼者,他不但走...

低成本创业好项目,这个可日赚几千元

低成本创业好项目,这个可日赚几千元

这几年创业项目也变得越来越多了,大家都知道,现在靠打工是挣不了什么钱的,所以,很多人宁愿自己创业不想打工。那么,低成本创业项目有哪些呢?下面小编马上为大家推荐一个低成本创业项目,如果你有资源的话,也可以免费去推广操作,做好了日赚几千也是很容...

适合年轻人创业项目,投资小又赚钱多的项目推荐

适合年轻人创业项目,投资小又赚钱多的项目推荐

社会在发展,科技在更新,生活也在发生着翻天覆地的变化。但是,唯一不变的是,年轻人创业的心,一直都没有变过。每个时代都会有很多想创业的年轻人,只是每个时代的年轻人创业项目都有所不同,那么,今天我们就说说适合现在年轻人创业的项目。下面小编整理了...

初中生创业可以做什么?适合初中生干的创业项目推荐

初中生创业可以做什么?适合初中生干的创业项目推荐

现如今很多初中生因为家里经济条件不是很好,不得已早早的就辍学创业了。那么,初中生创业可以做什么好呢?很多初中生对于刚开始创业很迷糊,不知道该做什么好,接下来小编就给大家推荐几种适合初中生干的创业项目,想创业挣钱的初中生朋友好好看下吧。1、手...

保持好奇心,是改变自己领导方式的方法

保持好奇心,是改变自己领导方式的方法

从理论上来说,做领导的,好奇心是一个基本行为选项。我们尊崇像史蒂夫·乔布斯(Steve Jobs)和托马斯·爱迪生(Thomas Edison)这样的世界级企业领袖,商业期刊也经常赞美好奇心是如何宝贵。但在日常实践中,谁有时间好奇这、好奇那...

养成良好的习惯,做一名有品位的教师

养成良好的习惯,做一名有品位的教师

陶行知先生说:“思想决定行动,行动养成习惯,习惯形成品质,品质决定命运”。最近从网上读了《影响教师一生的100个好习惯》一书,不禁对陶先生这句话有了更深刻的领悟和理解。阅读本书带给我的不仅是享受,更多的则是生活的引领,智慧的传递和方法的教授...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。