c++随机数代码,确保每个数概率一样
时间: 2023-07-22 20:29:09 浏览: 46
如果要确保生成的随机数在指定范围内且每个数的概率相等,可以使用C++11中的随机数库。该库提供了更加强大的随机数生成器和分布器,可以满足各种随机数需求。
以下是一个生成1到100之间的随机数并确保每个数概率相等的示例代码:
```c++
#include <iostream>
#include <random>
using namespace std;
int main()
{
// 初始化随机数生成器
random_device rd;
mt19937 gen(rd());
// 定义随机数分布器
uniform_int_distribution<> dis(1, 100);
// 生成随机数
int random_num = dis(gen);
// 输出随机数
cout << "随机数为:" << random_num << endl;
return 0;
}
```
在上面的代码中,我们使用了`random_device`来获取一个真正的随机数种子,然后使用`mt19937`作为随机数生成器。接着定义了一个`uniform_int_distribution`分布器来生成1到100之间的随机整数。最后通过调用分布器的`operator()`方法生成随机数。
需要注意的是,使用C++11中的随机数库可以更好地保证随机性和统计学意义上的均匀分布,但也需要在程序中设置好随机数种子。
相关问题
C++中生成一个多少到多少的随机数
如果你想要生成一个指定范围内的随机数,可以使用rand()函数和取模运算符%来实现。以下是一个示例代码,用于生成1到100之间的随机整数:
```c++
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main()
{
srand(time(NULL)); // 使用当前时间作为随机数种子
int lower_bound = 1; // 下限
int upper_bound = 100; // 上限
for(int i=0; i<10; i++)
{
int random_num = rand() % (upper_bound - lower_bound + 1) + lower_bound; // 生成1到100之间的随机数
cout << random_num << endl;
}
return 0;
}
```
在上面的代码中,我们通过取模运算符%将rand()函数生成的随机数限制在1到100之间。具体来说,我们将随机数与上限减去下限再加上1的结果取模,然后再加上下限。这样可以确保生成的随机数在指定范围内,并且每个数的概率相等。
c++泊松分布的随机数子函数
C++的<random>库中提供了泊松分布的随机数生成器函数,可以使用std::poisson_distribution来生成泊松分布的随机数。泊松分布是一种离散概率分布,它描述了在一段时间内或者一定区域内某事件发生的次数,例如在一小时内接到的电话数或者在一个区域内发生的交通事故数等等。泊松分布的概率质量函数为P(X=k)=e^(-lambda)*lambda^k/k!,其中lambda是事件发生的平均次数。下面是一个使用std::poisson_distribution生成泊松分布随机数的例子:
#include <random>
#include <iostream>
int main() {
std::random_device rd;
std::mt19937 gen(rd());
std::poisson_distribution<> distrib(2.0); // 平均每小时接到2个电话
for (int i = 0; i < 10; ++i) {
std::cout << distrib(gen) << '\n'; // 输出泊松分布的随机数
}
}
这个例子中,我们使用std::poisson_distribution生成平均每小时接到2个电话的泊松分布随机数。