Avatar billede arriva Nybegynder
07. december 2003 - 21:36 Der er 8 kommentarer og
1 løsning

Random funktion giver højst en integer?

Hey Eksperter, hvordan kan det være at følgende funktion højst giver en integer (32xxx hvad det nu er).. ?

#include <stdio.h>
#include <time.h>
int main(void)
{
long i;
long randomnumber, savenumber;
i = 1;
savenumber = 0;
srand(time(NULL));
while(i<100000)
{
randomnumber = rand();
if(randomnumber > savenumber)
{
savenumber = randomnumber;
}
printf("%d\n", randomnumber);
i++;
}
printf("\nHigest number:\n%d", savenumber);
return 0;
}
Avatar billede arne_v Ekspert
07. december 2003 - 21:39 #1
Din C compiler's rand funktion retunerer vel ikke større værdier ...
Avatar billede arne_v Ekspert
07. december 2003 - 21:40 #2
Det er implementations specifikt hvor store værdier rand returnerer.

stdlib.h definerer en konstant RAND_MAX som angiver værdien.
Avatar billede arne_v Ekspert
07. december 2003 - 21:41 #3
Hvis du har brug for større værdier så bruger du bare din
egen random generator.
Avatar billede arriva Nybegynder
07. december 2003 - 21:50 #4
det passede at RAND_MAX står til 0x7FFF.. jeg har prøvet at omskrive den i header filen, men det ser ikke ud til at virke alligevel?
Avatar billede arne_v Ekspert
07. december 2003 - 21:52 #5
Du skal ikke rette i header-filen. Den bruger ikke den konstant til
at beregen med. Den er kun information til dig.

Du skal kode din egen.
Avatar billede arne_v Ekspert
07. december 2003 - 21:52 #6
Eksempel:

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

static unsigned long int seed;

void mysrand(unsigned long int ss)
{
  seed=ss;
  return;
}

unsigned long int myrand()
{
  seed=(16807*seed) % 2147483647;
  return seed;
}

int main(int argc,char *argv[])
{
  int i;
  mysrand(time(NULL));
  for(i=0;i<10;i++) {
      printf("%ld\n",myrand());
  }
  exit(0);
}
Avatar billede arne_v Ekspert
07. december 2003 - 21:53 #7
Den returnerer 0 .. 2147483646
Avatar billede arne_v Ekspert
07. december 2003 - 21:53 #8
OK ?
Avatar billede arriva Nybegynder
07. december 2003 - 21:58 #9
tusind tak... :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester