Стани премиум член, добиј куп бенефити и поддржи ја работата на IT.mk!
  • Важно
    Имате проблем со најава или регистрација на it.mk?
    Побарајте го решението на вашиот проблем ТУКА!

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.674
194
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

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

Нови мислења

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

Статистика

Теми
45.620
Мислења
945.976
Членови
34.107
Огласи
1.989
Најнов член
MihailShevchenko
На врв Дно