Hej Hoppas du känner till hur det fungerar med namespaces och .h-historien. Det står annars i någon annan tråd i C++. Om du använder C++.NET Grafiskt så skriver du.Random Mellan 0 och 4??
jag är helt ny på c++
och jag är nyfiken på hur man slumpar fram ett hel tal mellan 0 och 4
och jag hittat på några förslag som har visats i tidigare trådar, men har ej fått det att fungera som jag vill
vill även veta hur jag ska göra för att kunna ända koden lätt så att jag kan slumpa mellan 0 och 100Sv: Random Mellan 0 och 4??
Okej:
Du måste först inkludera en fil; cstdlib (hette förut stdlib.h), den är till för att först starta en slumpgenerator, och sen få ut slumptal:
#include <cstdlib>
int main()
{
using namespace std;
int seed = 10, a;
srand(seed); //Startar slumptalsgenerator med talet 10
a=rand(); //ger a ett slumptal mellan 0 och RAND_MAX
}
Slumptalsgeneratorn ger ut en serie tal (ett tal varje gång rand anropas), och vilken serie det är beror på "seed". Eftersom du inte vill ha samma slumptal varje gång, så använder du tiden för att få fram nya seeds varje gång; detta gör du så här:
#include <cstdlib>
#include <ctime>
int main()
{
using namespace std;
srand(time(0)); //Startar slumptalsgenerator med talet 10
a=rand(); //ger a ett slumptal mellan 0 och RAND_MAX
}
(Hoppas jag inte skrivit fel nu...)
Okej, nu får du nya slumptal varje gång, och det är heltal mellan 0 och ett tal som heter RAND_MAX.
Nu finns det två sätt att få ut dina slumptal på - ett bra men lite långsammare, och ett sämre som går fortare. Det dåliga använder "modulo"-operatorn:
const int max=100;
a=rand()%max;
(om du inte vet hur modulo-operatorn funkar kan du nog söka - det är en mycket enkel operator)
Den bättre metoden går ut på att du först skapar ett flyttal mellan 0 och 1, och sedan multiplicerar detta flyttal med ditt maximum.
const int max=100;
a=(rand()/float(RAND_MAX))*max;
Oavsett vilken metod du använder har du nu fått ut ett slumptal mellan 0 och max-1.
Om du vill ha ett tal mellan m och n, så får du göra så här:
const int m=10, n=20;
a=(rand()/float(RAND_MAX))*(n-m)+m;Sv: Random Mellan 0 och 4??
Radom * slump = new Random;
test = slump->Next(0,5); // Slumpar mellan 0 till 4