Sida 1 av 1

Slumpgenerator i C++[LÖST]

Postat: 07 jan 2009, 02:00
av Neonii
Hej!

Jag håller på att göra ett Black Jack-spel i C++ för tillfället, mest som ett kul projekt och för att hålla kunskaperna sen gymnasiet levande.

Jag har kommit till den fas då jag behöver slumpa fram värden för att veta vilka kort som dras, men här stöter jag på problem:

När jag utvecklade i Borland C++ i skolan, på Windows XP, så använde vi funktionen:

Kod: Markera allt

#include <time.h>

int main()
{
srand((unsigned int) time(0));

int Slump = rand() % 3;
}
för att få fram våra slumptal, men när jag försöker kompilera programmet via Geany (som använder samma flaggor som om jag gjort det i terminalen), så ger den mig meddelandet:
"Black Jack.cpp:58: error: ‘srand’ was not declared in this scope"

Så, två frågor:
1) Vad ska jag inkludera för att få tillgång till att så ett frö för att kunna slumpa värden?
2) Hittar ingen vettig information på google på hur man får fram värden mellan två tal, exempelvis 4 och 12, utan endast mellan 0 och någonting. Har glömt bort detta sedan gymnasiet, är det någon som kortfattat kan förklara? : /

Tack för att ni läst all text, det blev mer än jag tänkt mig :)
/Neonii

Utanför ämnet: Jag har ett liknande problem tidigare då jag använde #include <conio>, vilket visade sig hänvisa till en Windows-fil. Dumt att lärarna inte kan lära en riktigt från början :P

Re: Slumpgenerator i C++

Postat: 07 jan 2009, 02:38
av micke_nordin
Neonii skrev: 2) Hittar ingen vettig information på google på hur man får fram värden mellan två tal, exempelvis 4 och 12, utan endast mellan 0 och någonting. Har glömt bort detta sedan gymnasiet, är det någon som kortfattat kan förklara?
Det andra vet jag inte om, men det här borde du väl kunna fixa genom att helt enkelt plussa på 4. Om du t.ex. kan få fram ett tal mellan 0 och 8 behöver du ju bara ta resultatet och lägga på 4.

Kod: Markera allt

int i = 0;
return i + 4;
typ.

/Micke

Re: Slumpgenerator i C++

Postat: 07 jan 2009, 02:50
av Osprey
Så här ungefär...

Kod: Markera allt

#include    <time.h>
#include    <stdlib.h>
#include    <stdio.h>
#define     Min_Varde   4.0
#define     Max_Varde   32.0
main(){
  int       Slump;
  srand( time(NULL) );
  Slump = Min_Varde + (Max_Varde * ((float)rand() / (RAND_MAX + 1.0)));
  printf("%d\n",Slump);
}
Jag är trött nu, men hoppas att det blev rätt ändå... :)

Re: Slumpgenerator i C++

Postat: 07 jan 2009, 03:12
av Neonii
Osprey skrev:Så här ungefär...

Kod: Markera allt

#include    <time.h>
#include    <stdlib.h>
#include    <stdio.h>
#define     Min_Varde   4.0
#define     Max_Varde   32.0
main(){
  int       Slump;
  srand( time(NULL) );
  Slump = Min_Varde + (Max_Varde * ((float)rand() / (RAND_MAX + 1.0)));
  printf("%d\n",Slump);
}
Jag är trött nu, men hoppas att det blev rätt ändå... :)
Jajjamensan, det gjorde susen :) Tack!
/Neonii

Re: Slumpgenerator i C++[LÖST]

Postat: 07 jan 2009, 04:29
av Osprey
Somnade inte ändå... :)

hmmm.... litet glapp i min hjärna vid beräkningen av Slump tror jag, lägg in den här raden istället, det borde kunna ge ganska goda resultat... :)

Kod: Markera allt

Slump= Min_Varde + ((double)(Max_Varde - Min_Varde + 1.0) * ((double)rand() / ((double)RAND_MAX + (double)1.0)));

Re: Slumpgenerator i C++[LÖST]

Postat: 07 jan 2009, 19:14
av Neonii
Vad är skillnaden mellan den nya kodsnutt du gav mig och den gamla? Slumpar den nyare fram "bättre" slumptal?

Re: Slumpgenerator i C++[LÖST]

Postat: 07 jan 2009, 20:12
av Osprey
Neonii skrev:Vad är skillnaden mellan den nya kodsnutt du gav mig och den gamla? Slumpar den nyare fram "bättre" slumptal?
Det borde bli lite bättre genom att det är högre precision, plus att den på ett korrekt sätt håller sig mellan max och min... ;)

Re: Slumpgenerator i C++[LÖST]

Postat: 07 jan 2009, 20:28
av Neonii
Okej okej, tack för ditt svar!

Postar den färdiga koden här inom ett par dagar för dom som vill testa det. Alltid kul med synpunkter på hur man kodar så man kan förbättra sig själv!

/Neonii