用c++写一个随机数生成器
时间: 2024-06-17 09:07:53 浏览: 19
用C++编写一个随机数生成器,可以使用C++标准库中的random头文件。具体步骤如下:
1. 在头文件中包含random头文件: #include <random>
2. 创建一个随机数生成器引擎,可以使用mt19937引擎: std::mt19937 rng;
3. 设置随机数种子,可以使用时间作为种子: rng.seed(std::random_device()());
4. 创建一个分布器,指定生成随机数的范围: std::uniform_int_distribution<int> dist(0, 100);
5. 通过调用分布器的operator()方法生成随机数: int random_num = dist(rng);
6. 可以使用循环语句生成多个随机数。
下面是一个简单的示例代码:
#include <iostream>
#include <random>
int main() {
std::mt19937 rng;
rng.seed(std::random_device()());
std::uniform_int_distribution<int> dist(0, 100);
for (int i = 0; i < 10; ++i) {
int random_num = dist(rng);
std::cout << random_num << " ";
}
std::cout << std::endl;
return 0;
}
相关问题
c++生成一个随机数
你可以使用 `<random>` 头文件中的随机数生成器来生成随机数。下面是一个使用 C++ 的 `<random>` 头文件生成随机数的示例代码:
```cpp
#include <iostream>
#include <random>
int main() {
// 创建一个随机数引擎
std::random_device rd;
std::mt19937 gen(rd());
// 定义随机数的范围
int min = 1;
int max = 100;
// 创建一个分布对象来指定随机数范围
std::uniform_int_distribution<> dis(min, max);
// 生成随机数
int random_num = dis(gen);
// 输出结果
std::cout << "随机数: " << random_num << std::endl;
return 0;
}
```
上述代码中,我们首先使用 `std::random_device` 来获取一个种子,然后将该种子传递给 `std::mt19937` 引擎。接下来,我们使用 `std::uniform_int_distribution` 来定义随机数的范围,并将引擎传递给该分布对象。最后,调用 `dis(gen)` 来生成一个随机数。
这样,运行程序时,就会输出一个在指定范围内的随机数。
c++链表加一个随机数生成
假设你的链表节点是这样定义的:
```c++
struct ListNode {
int val;
ListNode* next;
ListNode(int x) : val(x), next(nullptr) {}
};
```
你可以使用 C++ 的随机数生成器 `std::rand()` 生成一个随机数,并将其赋值给新插入的节点。
下面是一个示例代码,该代码包括如何在链表中插入一个新节点,并在其中添加一个随机值:
```c++
#include <iostream>
#include <cstdlib> // 包含 std::rand() 函数
#include <ctime> // 包含 std::time() 函数
using namespace std;
// 链表节点
struct ListNode {
int val;
ListNode* next;
ListNode(int x) : val(x), next(nullptr) {}
};
// 插入一个新节点
void insertNode(ListNode* &head, int val) {
ListNode* newNode = new ListNode(val);
newNode->next = head;
head = newNode;
}
int main() {
// 初始化随机数生成器
std::srand(std::time(nullptr));
ListNode* head = nullptr;
insertNode(head, 3);
insertNode(head, 2);
insertNode(head, 1);
// 遍历链表,并为每个节点添加随机值
ListNode* cur = head;
while (cur != nullptr) {
cur->val += std::rand() % 100; // 生成一个 0~99 的随机数
cur = cur->next;
}
// 输出链表
cur = head;
while (cur != nullptr) {
cout << cur->val << " ";
cur = cur->next;
}
cout << endl;
return 0;
}
```
该示例代码首先初始化了 C++ 的随机数生成器,然后使用 `insertNode()` 函数将几个新节点插入到链表中。接下来,它遍历了整个链表,并为每个节点添加了一个随机值。最后,它输出了修改后的链表。注意,由于随机值是根据当前时间生成的,所以每次运行程序时,输出的结果都会不同。