使用上述的函数完成这样的问题: 主程序中循环调用10000次MyRandom(1,100),求随机数分布情况。如: 1:102次 2:95次 3:98次 … 100:94次 并输出随机数落在1-50区间和51-100区间的次数。如: 1-50: 5010次 51-100: 4990次
时间: 2024-03-25 08:36:46 浏览: 49
获取随机数
好的,让我根据您的要求补充一下程序:
```c
#include <stdio.h>
int MyRandom(int n, int m);
int main() {
int count[100] = {0}; // 初始化每个数字出现的次数为0
for (int i = 0; i < 10000; i++) {
int num = MyRandom(1, 100); // 产生1~100之间的随机数
count[num - 1]++; // 对应数字出现的次数加1
}
printf("随机数分布情况:\n");
for (int i = 0; i < 100; i++) {
printf("%d: %d次\n", i + 1, count[i]);
}
int count1 = 0, count2 = 0;
for (int i = 0; i < 100; i++) {
if (i < 50) {
count1 += count[i];
} else {
count2 += count[i];
}
}
printf("1-50: %d次\t51-100: %d次\n", count1, count2);
return 0;
}
int MyRandom(int n, int m) {
static int initialized = 0;
if (!initialized) {
srand(time(NULL)); // 使用当前时间作为种子,初始化随机数发生器
initialized = 1;
}
int range = m - n + 1;
return n + rand() % range;
}
```
该程序的执行流程如下:
1. 首先,我们定义一个长度为100的数组count,用于记录每个数字出现的次数,初始化为0。
2. 然后,我们循环调用10000次MyRandom函数,每次产生1~100之间的随机数,并将对应数字出现的次数加1。
3. 接着,我们输出每个数字出现的次数,以及落在1~50和51~100区间的次数。
4. 最后,我们返回程序结束。
需要注意的是,为了方便统计落在1~50和51~100区间的次数,我们在输出每个数字出现的次数时,将数字的下标加1。这样,count[i]即表示数字i+1出现的次数。
希望我的回答能够帮助您解决问题。如果您还有其他问题,请随时提问。
阅读全文