|
||
![]() |
||
För att generera slumptal så måste man inkludera <cstdlib>. Vi kan då använda funktionen rand för att få slumptal. Vi prövar nu detta i ett litet program.
|
||
|
||
Till höger ser du ett exempel på resultatet av ovanstående kod. Exakt vilka siffror man får fram skiftar mellan olika utvecklingsverktyg. Den bristande slumpmässigheten visar sig i att vi får samma fem siffror om vi startar om programmet. Detta kan vi komma ifrån genom att använda funktionen srand. Denna funktion ger oss möjlighet att ge ett startvärde som används för slumptalsgenereringen. Problemet är då att vi måste ge olika värden varje gång programmet körs för att få olika slumptalsgenereringar. Hur skriver man då koden så att man garanterat vet att värdet skiljer sig mellan olika programkörningar? Jo, man använder datorns klocka! Tiden tickar på, så den är perfekt att använda i denna fall. Du skriver då... . srand(time(0)); Uttrycket time(0) ger något så märkligt som den aktuella tiden (uttryckt i sekunder) som förflutit sedan 00:00:00 GMT den 1 januari 1970. Vi får alltså ett stort tal och den stora förtjänsten är att nästa gång vi kör programmet så ger time(0) ett nytt (något större) tal. Vanligtvis vill man ha slumptalen inom en viss intervall och det ordnar man med modulus (%). Om vi vill ha slumptal mellan 1 - 100 så skriver vi... . 1+rand()%100; rand()%100 ger ett tal mellan 0 - 99 (0 om slumptalet är jämnt delbart med 100). Adderar man 1 till talet så har vi alltså ett slumptal mellan 1 - 100. Vi sätter nu samman det hela och får nu ett program som ger 5 slumptal mellan 1 - 100 och där slumptalen skiftar mellan olika programkörningar.
|
||
|
||
Observera att srand bara ska anropas en gång, vilket måste ske innan rand används.
Ett exempel på programkörning av ovanstående kod ser du här till höger. |
||
© Stockholms Stad 2001 |