非常郁闷的一道题啊,花了很长的时间就是不知道错在哪里了。
其实题目比较简单:首先是写一个随机变量函数,能够随机产生1-7之间的数字,然后验证1000000次,说明它确实是随机的。我的想法是对产生的任何一个随机数出现的次数做统计,然后算出它的出现频率。
我们还没有学习数组,所以我用第一种笨方法编了一个,不知道哪里出错:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 1000000
int rand7(void);
int fun(int,int);
int main()
{
int ask=0,total=0;
float prob;
printf("please enter a rand number between 0 and 7 that you want to check: \n")
scanf("%d",&ask);
total=fun(arr,ask);
percentage=total/N;
printf("the probility of %d is %f\n",ask,prob);
return 0;
}
int fun(int arr[],int num)
{
int rand7(void);
int count=0;
for(int i=0;i<N;i++)
{
if(arr[i]==num)
count++;
}
return count;
}
int rand7(void)
{
int i,arr[N];
srand(time(NULL));
for(i=1;i<=N;i++)
arr[i]=1+(int)rand() % 7;
return arr[i];
}
然后我看了一下网上的类似题目,别人用数组编的,我试了一下,觉得应该不会有问题了,但是编译器老是报错,请高手指点:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define N 10000
int main()
{
int search(int num[],int search_num);
int num[N],i=1;
int search_num,count;
float prob;
srand(time(NULL));
for(i=1;i<=N;i++)
{
num[i]=1+(int)rand()%7;
}
printf("please enter the number that you want to check:");
scanf("%d",&search_num);
count=search(num,search_num);
prob=count/N;
printf("the probility that %d appears is %f\n",search_num,prob);
return 0;
}
int search(int num[],int search_num)
{
int count=0,i=1;
for(i=1;i<=N;i++)
{
if(search_num==num[i])
count++;
}
return count;
}