November 26, 2002
jag behöver lite hjälp med detta.
jag vet att man kan använda rand(), och min c++-bok jiddrar om srand() och time(), och jag fattar knappt någonting.
just nu kan jag få den att skapa ett ganska stort nummer som inte kommer ändras om jag låter den skriva det flera gånger.
Jag behöver en generator som ger mig ett nummer mellan 1 och fem, som jag kan använda flera gånger i samma program.
tackar på förhand
December 2, 2001
#include <ctime>
#include <cstdlib>
#include <windows.h>
using namespace std;
unsigned int InitRand()
{
unsigned int seed;
seed = time(0) + timeGetTime();
srand(seed);
return seed;
}
int RandomNumber(int Min, int Max)
{
int i = 1+(int) ((double)Max*rand()/(RAND_MAX+(double)Min));
while(true)
{
if(!(i > RAND_MAX - (RAND_MAX % (Max-Min))))
return i;
i = 1+(int) ((double)Max*rand()/(RAND_MAX+(double)Min));
}
}
Detta är vad jag använder (för windows dvs). Funkar perfekt tycker jag. Det enda du behöver göra är att anropa InitRand() innan du börjar använda RandomNumber. Enjoy 😉
December 2, 2001
Byt ut mot det här då, bör vara något mer random, för linux endast 😀
#include <cstdlib>
#include <fstream>
using namespace std;
unsigned int InitRand()
{
unsigned int seed;
ifstream tmp("/dev/urandom");
tmp.read(&seed, sizeof(unsigned int));
tmp.close();
srand(seed);
return seed;
}
July 28, 2003
Starscream är nog inne på rätt spår:
srand(time(0)); // initierar random-generatorn
rand() % DITT_MAX_TAL; // Ger ett tal mellan 0 och DITT_MAX_TAL - 1.
Så vill du ha ett tal mellan 1 och 5 gör du:
(rand() % 5) + 1;
OBS! kör bara srand(time(0)) en gång!! T.ex. i början av programmet.
February 1, 2002
dae wrote: Starscream är nog inne på rätt spår:
srand(time(0)); // initierar random-generatorn
rand() % DITT_MAX_TAL; // Ger ett tal mellan 0 och DITT_MAX_TAL - 1.Så vill du ha ett tal mellan 1 och 5 gör du:
(rand() % 5) + 1;
OBS! kör bara srand(time(0)) en gång!! T.ex. i början av programmet.
Jao.. och RAND_MAX tror jag inte slumpade annorlunda tal, allså det går att räkna ut vilken sekund det blir ett specifikt nr.. på detta sätt räknar den från 1970 talet... (har jag för mig)
2 Guest(s)