Думаю, тут рандом
typerandomization(int totaltype)
{
Int totalcreated, totalno=rand() % (totaltype^2-2*totaltype)+2*totaltype, xdirection=0,ydirection=0, *notype[totalno][], *grouptotal[totaltype][], groupstatisify, *nooccupied[], *groupoccupied[], groupiteractioncreated;
int sixrandomnumber[6],sixnumbertype[6], iterationtaken, sixrandomtype[], *randomiteration[], randomiterationtotal;
Int totalint=rand() %255*rand() %255+255;
Boolean notcomplete=false;
/*Step 1 is to create all *notype[totalno][] array.*/
for(it=1; it<=totalint; it++)
{xdirection=0, ydirection=0, totalcreated=0,*nooccupied[]=0, *groupoccupied[]=0, *grouptotal[][it]=0, groupsatisify=0, *nooccupied[]=0;
while(!notcomplete)
while(totalcreated<=totalno)
{
xdirection+= rand() % totalno;
iff(xdirection>totalno)
xdirection%=totalno;
ydirection+= rand() % totaltype;
iff(ydirection>totaltype)
ydirection%=totaltype;
Iff (*nooccupied[xdirection]!=1)
Notype[xdirection][it]=ydirection, *nooccupied[xdirection]==1, *grouptotal[ydirection][it]++,totalcreated++;}
for(gc=1;gc<=totaltype; gc++)
{{iff(*grouptotal[gc][it]<(int) totalno/(3*totaltype))
gc=totaltype, Notcomplete=false;
else
Groupstatisify++;}
iff(groupstatisify==totaltype)
Notcomplete=true;}}}
/*Step 2 is to create 6 random value for lottery.*/
iterationtaken=rand() % totalint;
totalcreated=0;
while(totalcreated<=6)
{
xdirection+= rand() % totalno;
iff(xdirection>totalno)
xdirection%=totalno;
ydirection+= rand() % totaltype;
iff(ydirection>totaltype)
ydirection%=totaltype;
Iff (*notype[xdirection][iterationtaken]==ydirection)
{sixrandomnumber[++totalcreated]=xdirection;}}
/*Step 3 is to choose all the iteration out of the totalint to use and put them into grouparrangement array.*/
randomiterationtotal=rand() % totalint;
*groupoccupied[]=0, *iterationoccipied[]=0, xdirection=0,ydirection=0, groupiteractioncreated=0,
do{
xdirection+= rand() % allint+1;
iff(xdirection>allint)
xdirection%=allint+1;
ydirection+= rand() % allint+1;
iff(ydirection>allint)
ydirection%=allint+1;
iff(*groupoccupied[xdirection]==0 & *iterationoccipied[ydirection]==0 & ydirection!=iterationtaken)
{*groupoccupied[xdirection]=1,*iterationoccipied[ydirection]=1, *randomiteration[xdirection]=ydirection, groupiteractioncreated++;}}
while(groupiteractioncreated<=randomiterationtotal)
for(intnow=1; intnow<=allint; intnow++)
{
/*Now find out the type of the number as the output. */
for(pn=1; pn<=totaltype; pn++)
{sixnumbertype[pn]=Notype[sixnumber[pn]];}
/* First find out the type that number belong to and assign a different number from the same group in the same iteration.
for(no=1; no<=6; no++)
{
xdirection=0, *nooccupied[]=0
while(notfound)
{
xdirection+= rand() % totalno+1;
iff(xdirection>totalno)
xdirection%=totalno+1;
iff(*nooccupied[xdirection]==0)
{*nooccupied[xdirection]=1;
iff(notype[Sixnumbertype[no]][*randomiteration[intnow]==notype[xdirection][*randomiteration[intnow])
{notfound=false, Sixnumber[no]=xdirection;}}}
/*Output value[no]*/
int frequency[totaltype]=0, countf=0, lowest=1;
do
{xdirection+= rand() % totaltype+1;
{iff(xdirection>totaltype)
xdirection%=totaltype+1;}
ydirection+= rand() % totaltype+1;
{iff(ydirection>totaltype)
ydirection%=totaltype+1;}
iff(sixnumbertype[xdirection]==ydirection)
frequency[ydirection]++, courtf++;}
while(countf<=totaltype)
for(sil=2; sil<totaltype; sil++)
{iff(frequency[lowest]>frequency[sil])
highest=sil;}
return sixnumbertype[lowest];
}}