| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 527 人关注过本帖
标题:非常郁闷的一道题啊,花了很长的时间就是不知道错在哪里了。
只看楼主 加入收藏
gll07
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2008-10-29
收藏
 问题点数:0 回复次数:2 
非常郁闷的一道题啊,花了很长的时间就是不知道错在哪里了。
其实题目比较简单:首先是写一个随机变量函数,能够随机产生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;
}
搜索更多相关主题的帖子: 时间 
2008-10-29 16:48
cblovehh
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2008-10-14
收藏
得分:0 
上面是你写的么?错误很错
稍微给你改了下,逻辑错误要你自己改
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define N 1000000

int rand7(void);
int fun(int arr[],int num);

int main()
{
    int ask=0,total=0;
    int *arr;
    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);
    prob=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,i;

for(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];
}

我是OVER!!!    我是OVER!!!    我是OVER!!!
2008-10-29 17:06
gll07
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2008-10-29
收藏
得分:0 
不好意思,我说的那个很笨的方法是下面这个
#include <stdlib.h>
#include <stdio.h>
#include <time.h>

int rand7(void);

int main()
{
    int k=1,a1=0,a2=0,a3=0,a4=0,a5=0,a6=0,a7=0;
    float p1=0,p2=0,p3=0,p4=0,p5=0,p6=0,p7=0;
    int interim;
    int total=1000000;
    
    for(k=1;k<=total;k++)
    {
        interim=rand7();

        if(interim==1)
            a1++;
        else if(interim==2)
            a2++;
        else if(interim==3)
            a3++;
        else if(interim==4)
            a4++;
        else if(interim==5)
            a5++;
        else if(interim==6)
            a6++;
        else if(interim==7)
            a7++;
    }

        p1=a1/total;
        p2=a2/total;
        p3=a3/total;
        p4=a4/total;
        p5=a5/total;
        p6=a6/total;
        p7=a7/total;

        printf("the percentage of the 7 rand number are:\n p1=%f\n p2=%f\n p3=%f\n p4=%f\n p5=%f\n p6=%f\n p7=%f\n",p1,p2,p3,p4,p5,p6,p7);

        return 0;
}


int rand7(void)
{
int num;

srand(time(NULL));
num=1+(int)rand() % 7;

return num;
}
2008-10-29 22:18
快速回复:非常郁闷的一道题啊,花了很长的时间就是不知道错在哪里了。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020028 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved