C++(rand()、srand())



rand()srand() 是 C++ 中用于生成随机数的函数。它们定义在 <cstdlib> 头文件中,并且在 C 语言中也有相同的用法。



1. rand() 函数

  • 功能: rand() 函数用于生成一个范围在 0RAND_MAX 之间的随机整数,其中 RAND_MAX 是一个常量,通常定义为 32767(但这个值可能因系统不同而有所变化)。
  • 用法: int rand();
  • 返回值: rand() 返回一个伪随机整数。

示例:

#include <iostream>
#include <cstdlib>  // 包含 rand 和 srand 函数
using namespace std;

int main() {
    for (int i = 0; i < 5; ++i) {
        cout << rand() << endl;
    }
    return 0;
}

上面的代码会输出 5 个随机整数。



2. srand() 函数

  • 功能: srand() 函数用于为 rand() 函数设定一个种子值。这个种子值决定了 rand() 函数生成的随机数序列。
  • 用法: void srand(unsigned int seed);
  • 参数: seed 是一个无符号整数,用作随机数生成器的种子。
  • 注意事项: 如果你不调用 srand() 来设置种子,那么 rand() 每次运行时都会生成相同的随机数序列,因为默认的种子是固定的。如果想要每次运行程序时生成不同的随机数,可以将 srand() 的参数设置为 time(0),这是当前时间的秒数。

示例:

#include <iostream>
#include <cstdlib>
#include <ctime>  // 包含 time 函数
using namespace std;

int main() {
    srand(time(0));  // 使用当前时间作为随机数生成的种子

    for (int i = 0; i < 5; ++i) {
        cout << rand() << endl;
    }
    return 0;
}

这段代码将生成每次运行都不同的随机数。



3. rand()srand() 的配合使用

  • 通常在程序开始时调用 srand() 来设置种子,然后在需要随机数的地方调用 rand()
  • 若多次调用 srand(),每次种子值相同,则产生的随机数序列也相同。

示例:

#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;

int main() {
    srand(12345);  // 设置固定的种子
    cout << "固定种子:" << endl;
    for (int i = 0; i < 5; ++i) {
        cout << rand() << endl;
    }

    srand(time(0));  // 使用当前时间作为种子
    cout << "时间种子:" << endl;
    for (int i = 0; i < 5; ++i) {
        cout << rand() << endl;
    }

    return 0;
}

这段代码首先会输出一组固定的随机数(因为 srand(12345)),然后输出一组不同的随机数(因为 srand(time(0)) 使用了当前时间作为种子)。



4. 小结

  • rand() 用于生成伪随机数。
  • srand() 用于设置生成伪随机数的种子。
  • 若不调用 srand() 或使用相同的种子,rand() 每次生成的随机数序列相同。
  • 通常通过 srand(time(0)) 来生成不同的随机数序列。

这就是 rand()srand() 在 C++ 中的基本用法及其配合使用的详细解析。

posted @   做梦当财神  阅读(164)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
历史上的今天:
2021-08-20 np.unique()
2021-08-20 MySQL 中的单引号、双引号、反引号
点击右上角即可分享
微信分享提示