为什么int上的返回值相同

Why is the return value on int is the same over?

本文关键字:返回值 int 为什么      更新时间:2023-10-16

s,我正在根据随机值创建一些游戏。该游戏应该通过插入一个团队组合的球员统计数据,另一支球员组合等等,可以预测足球比赛的结果。投入游戏统计数据的团队将增加竞争对手的统计数据。如果值的值触及了团队的统计数据,则将播放器的原始数据除以两个,并将其视为将考虑得分的情况。

这是代码

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#include <time.h>
int score_prob(int x,int hh, int aw);
int main()
{
    int i,j,k,a,b,c,n,sc,shome=0,saway=0;
    int p[64][64],x,y,z,ho,aw;
    int t[64],h,w,sem,tand;
    printf("Number Of Team  : ");scanf("%d",&x);
    printf("Number Of Player: ");scanf("%d",&y);
    for(i=0;i<x;i++)
    {
        z = 0;
        printf("nn");
        printf("Teamm %d n",i+1);
        for(j=0;j<y;j++)
        {
            printf(". PLayer %d : " ,(j+1));scanf("%d",&p[i][j]);
            z += p[i][j];
        }
        printf("Stat of team %d = %d",i+1,z);
        t[i] = z;
    }
    srand(time(NULL));
    do
    {
        k = 0;
        printf("nn");
        printf("Home Team Number: ");scanf("%d",&a);a = a - 1;
        printf("Away Team Number: ");scanf("%d",&b);b = b - 1;
        for(i=0;i<90;i++)
        {
            i += 4;
            printf("nMinute %d: ",i+1);
            {
                sem  = t[a] + t[b];
                ho=t[a];aw=t[b];
                sc = score_prob(sem,ho,aw);
                printf("n              %dn",score_prob(sem,t[a],t[b]));
                if(sc == 0)
                {
                    shome += 1;
                    printf("Home Scoren");printf(" %d VS %d ",shome,saway);
                }else if(sc == 2)
                {
                    printf(" %d VS %d ",shome,saway);
                }
                else{
                    saway += 1;
                    printf("Away Scoren");printf(" %d VS %d ",shome,saway);
                }
            }
        }
    }while(k == 0);
    return 0;
}
int score_prob(int x,int hh, int aw)
{
   int st,aa,nn,sr=0,sh=0,sa=0,home,away;
   time_t t;
   sh=0;sa=0;
   aw = aw / 2; hh = hh / 2;
   srand((unsigned) time(&t));
   for(nn=0;nn<x;nn++)
   {
        aa = rand() % x;
        if(aa<hh)
        {
            sh += 1;
        }
        if(aa>(aa - aw))
        {
            sa += 1;
        }
        if(aa!=(aa<hh) && aa != (aa<(aa-aw)))
        {
            sr +=1;
        }
   }
   if(sr != 0)
   {
       if(sh<sa)
       {
           st = 1;
       }
       else
       {
           st = 0;
       }
   }
   else
   {
       st = 2;
   }
   return st;
}

随机数不是完全随机=(有一些具有伪随机号码的表,当您调用srand()时,您只需选择其中一个表即可。之后,rand()的每个电话都会从所选表中获取一些数字。因此,如果您用相同种子几次致电srand(),您将一遍又一遍地获得同一张桌子。

rand是'秘密'递归函数(线性一致生成器类型(。这意味着上一个呼叫的结果用作下一个呼叫的输入。由于它将以前的值存储在静态变量中,因此您需要自己设置它,然后再首次致电rand

您可以在运行时多次重置它,但是,由于您可能在同一第二秒内多次调用srand((unsigned) time(&t));,因此此值似乎是恒定的。