用c语言写求随机数分布情况,主程序中循环调用10000次MyRandom(1,100)
时间: 2024-03-26 19:38:49 浏览: 117
可以使用数组来记录随机数分布情况。具体实现可以参考以下代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 10000
int MyRandom(int min, int max)
{
return rand() % (max - min + 1) + min;
}
int main()
{
int i, num, dist[100] = {0};
srand(time(NULL));
for (i = 0; i < N; i++) {
num = MyRandom(1, 100);
dist[num-1]++;
}
for (i = 0; i < 100; i++) {
printf("%d: %d\n", i+1, dist[i]);
}
return 0;
}
```
这段代码中,我们使用了一个长度为100的数组dist来记录每个随机数出现的次数。在循环调用MyRandom函数时,我们将得到的随机数作为数组下标来增加相应元素的值。最后再遍历整个数组,输出每个随机数出现的次数。注意,这里的随机数范围是1到100,而数组下标是从0到99,因此在对数组元素进行操作时需要注意下标的转换。
相关问题
使用上述的函数完成这样的问题: 主程序中循环调用10000次MyRandom(1,100),求随机数分布情况。如: 1:102次 2:95次 3:98次 … 100:94次 并输出随机数落在1-50区间和51-100区间的次数。如: 1-50: 5010次 51-100: 4990次
好的,让我根据您的要求补充一下程序:
```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出现的次数。
希望我的回答能够帮助您解决问题。如果您还有其他问题,请随时提问。
用c语言写出一个代码要求1、主程序中循环调用 10000 次 MyRandom(1,100),求随机数分布情况。 2、制作一“35 选 7 ” 福利彩券摇奖器,即:每次运行,随机产生 7 个 1~35 的不重复的整数。 3、制作一“x 选 y ”通用福利彩券摇奖器,即:每次运行,随机产生 y 个 1~ x 的不重复的整数。 要求交互良好,使用方便。
好的,以下是符合要求的 C 语言代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int MyRandom(int low, int high) {
return rand() % (high - low + 1) + low;
}
int main() {
int i, j, num, count[100] = {0};
// 设置随机数种子
srand((unsigned)time(NULL));
// 1. 主程序中循环调用 10000 次 MyRandom(1,100),求随机数分布情况。
for (i = 0; i < 10000; i++) {
num = MyRandom(1, 100);
count[num-1]++;
}
for (i = 0; i < 100; i++) {
printf("随机数 %d 出现了 %d 次\n", i+1, count[i]);
}
// 2. 制作一“35 选 7 ”福利彩券摇奖器,即:每次运行,随机产生 7 个 1~35 的不重复的整数。
int nums[7];
for (i = 0; i < 7; i++) {
nums[i] = MyRandom(1, 35);
for (j = 0; j < i; j++) {
if (nums[i] == nums[j]) {
i--;
break;
}
}
}
printf("本期中奖号码为:");
for (i = 0; i < 7; i++) {
printf("%d ", nums[i]);
}
printf("\n");
// 3. 制作一“x 选 y ”通用福利彩券摇奖器,即:每次运行,随机产生 y 个 1~x的不重复的整数。要求交互良好,使用方便。
int x, y;
printf("请输入 x 的值:");
scanf("%d", &x);
printf("请输入 y 的值:");
scanf("%d", &y);
int nums2[y];
for (i = 0; i < y; i++) {
nums2[i] = MyRandom(1, x);
for (j = 0; j < i; j++) {
if (nums2[i] == nums2[j]) {
i--;
break;
}
}
}
printf("本期中奖号码为:");
for (i = 0; i < y; i++) {
printf("%d ", nums2[i]);
}
printf("\n");
return 0;
}
```
这个 C 语言代码也包含了三个要求的功能,使用了 MyRandom 函数来产生随机数。同时,为了避免重复,制作了去重的处理,确保每次产生的随机数都是不重复的。使用者只需要输入 x 和 y 的值即可产生对应数量的随机数,方便实用。
阅读全文