异想之旅:本人原创博客完全手敲,绝对非搬运,全网不可能有重复;本人无团队,仅为技术爱好者进行分享,所有内容不牵扯广告。本人所有文章仅在CSDN和个人博客(一定是异想之旅域名)发布,除此之外全部是盗文!


下面这段代码给出了最基本的使用:

#include <iostream>
#include <time.h>
using namespace std;
int main() {
    srand(time(NULL));  // 设置种子,以时间戳为种子以保证每次数字不同
	rand();  // 看下面的解释
	

    // 输出一个0~RAND_MAX的数:RAND_MAX值为32767~2147483647(short和int的上限)
    cout << rand() << endl;

    // 输出一个0~100的数
    cout << rand() % 101 << endl;

    // 输出一个50~150的数
    cout << 50 + rand() % 101 << endl;

    return 0;
}

randsrand 函数本身在头文件 iostream 中(严格来讲是 stdlib.h ,但是不知道为什么这样也能行),但是为了使用时间戳作为种子,所以导入 time.h

当然一个万能头也能解决问题

如果不设置时间戳作为种子,生成的数字每次都将会是一样的

另外使用时间戳后如果密集执行程序,由于种子(时间戳)接近,每次生成的第一个随机数也十分接近,所以可以如第8行先消耗一次随机数数列的第一个。(毕竟没研究算法原理,具体原因不知道,只是根据个人使用现象总结经验)

先写到这,要是有人点赞的话再来补较大的随机数生成方案

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐