C语言怎么产生随机数
时间: 2024-09-30 21:00:47 浏览: 40
在C语言中,生成随机数通常需要使用`<stdlib.h>`库中的函数。有两种常见的方法:
1. **使用srand() 和 rand() 函数**:
- `srand(time(NULL))`: 这是一个种子函数,它接受一个整数作为参数,用于初始化随机数发生器的内部状态。通常我们用当前时间做种子,以便每次程序运行时得到不同的序列。
- `rand()`: 这个函数返回一个0到RAND_MAX之间的伪随机整数,默认范围通常是0-32767。
示例:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
srand(time(0)); // 设置随机种子
int random_num = rand(); // 生成随机数
printf("Random number between 0 and %d: %d\n", RAND_MAX, random_num);
return 0;
}
```
2. **使用更现代的方式** (since C99) 使用`<random>`库:
- 首先包含头文件 `<random>` 和 `<chrono>`。
- 创建一个 `std::mt19937` 类型的随机引擎,它是基于 Mersenne Twister 算法的高质量随机数生成器。
- 创建一个 `std::uniform_int_distribution` 来指定随机数的范围。
示例:
```c
#include <iostream>
#include <random>
#include <chrono>
int main() {
std::random_device rd; // 获取随机设备
auto seed = rd(); // 用设备随机数初始化种子
std::mt19937 gen(seed); // 创建Mersenne Twister随机引擎
// 定义随机数的范围
std::uniform_int_distribution<> dis(0, 100);
int random_num = dis(gen);
std::cout << "Random number between 0 and 100: " << random_num << '\n';
return 0;
}
```
阅读全文