• Здраво и добредојдовте на форумот на IT.mk.

    Доколку сеуште не сте дел од најголемата заедница на ИТ професионалци и ентузијасти во Македонија, можете бесплатно да се - процесот нема да ви одземе повеќе од 2-3 минути, а за полесна регистрација овозможивме и регистрирање со Facebook и Steam.

random numbers

CyberLord

Intern
16 април 2007
135
2
Пробај вака :

Код:
#include <stdio.h>

int main(int argc, char *argv[])
{
   int i;

[B]randomize();[/B]

   for (i=1;i<=20;i++)
   {
      printf("%10d" , 1 + rand() % 6 );

      if (i %5 == 0)
          printf("\n");

   }
   getchar();
   return 0;
}
:rolleyes:
 

CyberLord

Intern
16 април 2007
135
2
Моја грешка, испуштив #include <stdlib.h>

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
int i;

randomize();

for (i=1;i<=20;i++)
{
printf("%10d" , 1 + rand() % 6 );

if (i %5 == 0)
printf("\n");

}
getchar();
return 0;
}
 

CyberLord

Intern
16 април 2007
135
2
Се користи за иницијализација на random number генераторот.
За rand() или random(int) да враќаат случајни броеви, прво мора да ја повикаш функцијата randomize() пред да повикаш rand() или random(int). Доволно е само еднаш да се повика randomize().
 

the G man

Intern
20 јули 2007
44
1
Имаш и друга алтернатива, да генерираш рандом број со наредбата: srand(time(NULL)); , па ќе ја повикаш rand() функцијата.
Претходно треба да биде вклучена библиотеката(да не речам хедерот) <time.h> и <stdlib.h>.
Уствари очигледно е дека генерира број, како претходната randomize() од CyberLord, само тука е спрема времето на извршување на функцијата(а randomize() ја немам користено, па не знам како работи, така да може и истиот принцип да е).
 

minimoog

Intern
14 јули 2007
317
16
Randomize функционира исто како и srand, семето се одбира тајмерот. Оваа функција сум ја сретнал кај GCC но ја нема кај MSVC.
 

LiquidWorm

Администратор
26 март 2007
2,667
183
www.zeroscience.mk
Да да, дефинитивно srand(time(NULL)) за да не бидат исти бројки...

[hl='C']
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int rnd(void);
void seedrnd(void);

int main()
{
int x;
seedrnd();

for(x=0;x<100;x++)
printf(“%d\t”,rnd());
return(0);
}

int rnd(void)
{
int r;
r=rand();
return(r);
}

void seedrnd(void)
{
srand((unsigned)time(NULL));
}

[/hl]

Веројатно random броевите се во опсег од 0-32,000, и некои верзии на GCC компајлери произведуваат поголеми вредности на random броеви од 0-32,000. Тие поголеми вредности се земени од вредноста на RAND_MAX кое се наоѓа во stdlib.h хедерот. Кај FreeBSD на пример, вредноста на RAND_MAX е 0x7FFFFFF (hex) или 2,147,483,647, кај мене моментално на Windows XP e 32,767 (MinGW).

За да ја видите вредноста на RAND_MAX на Вашиот компјутер, додајте го ова во програмот пред return(0); во main() функцијата:

[hl='C']
printf(“\nRAND_MAX e ednakvo na %u\n”,RAND_MAX);
[/hl]

%u = складирање на unsigned long integer.

:rolleyes:
 

minimoog

Intern
14 јули 2007
317
16
OT

Боење на кодов е автоматски? Зошто зелената заграда изгледа грдо, се губи на читливост...
 

Нови мислења

Последни Теми

Статистика

Теми
43,582
Мислења
823,945
Членови
28,080
Најнов член
ciksa
На врв Дно