sobota, 15 czerwca 2019

Simulation of lottery draws (C-gcc)

I want to check 1000 number draws (5 different numbers [42 max value]) and make a camparison to the pattern. 


#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAX 42
#define BETS 1000
#define VAL_BET 5


void sort_Bet(int *tab, int size)
{
int i,j,k;
for(i=1;i<size;i++)
{
j=i;
k=tab[j];
while((j>0) && (tab[j-1]>k))
{
tab[j]=tab[j-1];
j--;
}
tab[j]=k;
}
}
int *tab_Bet;
int **tab_Game;

void init_Arrays()
{
 int i,j,k;
 int temp_tab_Bet[MAX];
 int temp_tab_Game[BETS][MAX];
 tab_Bet=(int*)malloc(VAL_BET*sizeof(int));
 tab_Game=(int**)malloc(BETS*sizeof(int*));
 for(i=0;i<BETS;i++)
  tab_Game[i]=(int*)malloc(VAL_BET*sizeof(int*)); 
 for(i=0;i<MAX;i++)
  temp_tab_Bet[i]=0;
 for(i=0;i<BETS;i++)
  for(j=0;j<MAX;j++)
  temp_tab_Game[i][j]=0;
 i=0;
 do
 {
  do
  {
k=rand()%MAX;
  }while(temp_tab_Bet[k]!=0);
  temp_tab_Bet[k]=1;
  tab_Bet[i]=k+1;
  i++;
  } while(i<VAL_BET);
  sort_Bet(tab_Bet,VAL_BET);
  i=0;
  do
  {
   j=0;  
   do
   {  
   do
   {
  k=rand()%MAX;
   }while(temp_tab_Game[i][k]!=0);
   temp_tab_Game[i][k]=1;
   tab_Game[i][j]=k+1;
   ++j;
   }while(j<VAL_BET);    
    ++i;  
  }while(i<BETS);
  for(i=0;i<BETS;i++)
   sort_Bet(tab_Game[i],VAL_BET);
}
void destroy_Arrays()
{
int i;
for(i=0;i<BETS;i++)
free(tab_Game[i]);
free(tab_Game);
free(tab_Bet);
}
int is_Five(int *tab1, int *tab2, int size)
{
int i,j,sum;
sum=0;
i=0;
do
{
for(j=0;j<size;j++)
if(tab1[j]==tab2[i])
 ++sum;
++i;
}while(i<size);
if(sum==5)
return 1;
else
return 0;

}
int is_Four(int *tab1, int *tab2, int size)
{
int i,j,sum;
sum=0;
i=0;
do
{
for(j=0;j<size;j++)
if(tab1[j]==tab2[i])
 ++sum;
++i;
}while(i<size);
if(sum==4)
return 1;
else
return 0;

}
int is_Three(int *tab1, int *tab2, int size)
{
int i,j,sum;
sum=0;
i=0;
do
{
for(j=0;j<size;j++)
if(tab1[j]==tab2[i])
 ++sum;
++i;
}while(i<size);
if(sum==3)
return 1;
else
return 0;

}
int is_Two(int *tab1, int *tab2, int size)
{
int i,j,sum;
sum=0;
i=0;
do
{
for(j=0;j<size;j++)
if(tab1[j]==tab2[i])
 ++sum;
++i;
}while(i<size);
if(sum==2)
return 1;
else
return 0;

}
int is_One(int *tab1, int *tab2, int size)
{
int i,j,sum;
sum=0;
i=0;
do
{
for(j=0;j<size;j++)
if(tab1[j]==tab2[i])
 ++sum;
++i;
}while(i<size);
if(sum==1)
return 1;
else
return 0;

}
int is_Zero(int *tab1, int *tab2, int size)
{
int i,j,sum;
sum=0;
i=0;
do
{
for(j=0;j<size;j++)
if(tab1[j]==tab2[i])
 ++sum;
++i;
}while(i<size);
if(sum==0)
return 1;
else
return 0;

}


int main(int argc, char **argv)
{
int i;
int win_0,win_1,win_2,win_3,win_4,win_5;
win_0=win_1=win_2=win_3=win_4=win_5=0;
srand(time(NULL));
init_Arrays();
for(i=0;i<BETS;i++)
{
if(is_Zero(tab_Game[i],tab_Bet,VAL_BET))
++win_0;
if(is_One(tab_Game[i],tab_Bet,VAL_BET))
++win_1;
if(is_Two(tab_Game[i],tab_Bet,VAL_BET))
++win_2;
if(is_Three(tab_Game[i],tab_Bet,VAL_BET))
++win_3;
if(is_Four(tab_Game[i],tab_Bet,VAL_BET))
++win_4;
if(is_Five(tab_Game[i],tab_Bet,VAL_BET))
++win_5;
}

printf("Your BET: (5 [42])");
printf("\n");
for(i=0;i<VAL_BET;i++)
printf("%d  ",tab_Bet[i]);
printf("\n----------------------------------------------\n");
printf("For 1000 draws: \n\n");
printf(" 5 - %d\n",win_5);
printf(" 4 - %d\n",win_4);
printf(" 3 - %d\n",win_3);
printf(" 2 - %d\n",win_2);
printf(" 1 - %d\n",win_1);
printf(" 0 - %d\n",win_0);


destroy_Arrays();

return 0;
}






Brak komentarzy:

Prześlij komentarz