C语言生成1000个正太随机数,并用图表示它的分布
时间: 2024-05-06 10:20:44 浏览: 180
使用c语言生成随机数的示例分享
抱歉,作为AI语言模型,我无法生成图形,但是我可以提供C语言代码,您可以使用该代码生成1000个正态随机数,并使用其他工具绘制图形。
以下是C语言代码:
```
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define N 1000
double rand_normal(double mean, double stddev)
{
double u = (double) rand() / RAND_MAX;
double v = (double) rand() / RAND_MAX;
double x = sqrt(-2.0 * log(u)) * cos(2.0 * M_PI * v);
return mean + stddev * x;
}
int main()
{
double mean = 0.0, stddev = 1.0;
double nums[N];
srand(12345); // 设置随机数种子
// 生成1000个正态分布随机数
for (int i = 0; i < N; i++) {
nums[i] = rand_normal(mean, stddev);
}
// 输出前10个随机数
for (int i = 0; i < 10; i++) {
printf("%.6f\n", nums[i]);
}
return 0;
}
```
此代码使用Box-Muller方法生成正态分布随机数。您可以将`mean`和`stddev`变量设置为所需的平均值和标准差。在此示例中,我们将它们设置为0和1。
要绘制分布图,您可以使用各种工具,例如Python的Matplotlib库或R语言。以下是Python代码示例:
```
import matplotlib.pyplot as plt
# 读取随机数文件
with open('nums.txt', 'r') as f:
nums = [float(line.strip()) for line in f]
# 绘制直方图
plt.hist(nums, bins=20, density=True)
# 绘制正态分布曲线
import numpy as np
from scipy.stats import norm
x = np.linspace(-4, 4, 100)
plt.plot(x, norm.pdf(x, loc=0, scale=1))
plt.show()
```
在此示例中,我们假设随机数已保存在名为`nums.txt`的文本文件中。我们使用Matplotlib绘制直方图,并在上面绘制正态分布曲线。您可以更改`bins`参数以更改直方图的柱数,更改`loc`和`scale`参数以更改正态分布曲线的位置和形状。
阅读全文