用C语言写一份程序,从0~100的均匀分布中进行抽样,获取其均值,并且输出均值在40~60之间以0.4为区间上的概率分布
时间: 2024-10-02 10:02:50 浏览: 39
在C语言中,我们可以使用 `<stdlib.h>` 中的 `rand()` 和 `<time.h>` 中的 `srand()` 函数生成0到100之间的随机数。为了计算均值,我们需要遍历一定次数的样本,然后对所有数值求平均。对于40~60范围内每个0.4的区间,我们记录落入该区间的次数,最后除以总样本数得到概率。
以下是一个简单的示例程序:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define SAMPLE_SIZE 1000000 // 样本数量
#define INTERVAL_SIZE 20 // 区间大小
#define INTERVALS 5 // 分成的区间数量
double interval_probs[INTERVALS] = {0}; // 存储每个区间的概率
// 生成并累加到相应区间
void sample_and_count(void) {
srand(time(0)); // 设置随机种子
int sum = 0;
for (int i = 0; i < SAMPLE_SIZE; ++i) {
int random_num = rand() % 101; // 生成0到100的随机数
if (random_num >= 40 && random_num <= 60) {
double index = (random_num - 40) / 0.4;
if (index < INTERVALS) {
interval_probs[(int)index]++;
sum += 1; // 对进入范围的数累计
}
}
}
}
// 计算均值
double calculate_mean(void) {
double total = 0;
for (int i = 0; i <= 100; ++i) {
total += (double)i * (double)interval_probs[i];
}
return total / (SAMPLE_SIZE * 0.4);
}
int main() {
sample_and_count();
double mean = calculate_mean();
printf("均值: %.2f\n", mean);
for (int i = 0; i < INTERVALS; ++i) {
printf("区间%+.2f-%+.2f的概率: %.2f%%\n", 40 + i * 0.4, 40 + (i + 1) * 0.4, 100 * interval_probs[i] / SAMPLE_SIZE);
}
return 0;
}
```
这个程序首先会生成指定数量的随机数,统计它们落在40~60区间内并且每0.4分段的情况,然后计算出均值。运行此程序,你会看到输出的均值以及每个区间内的概率。
阅读全文