Forum huvudsida -> Programmering -> C++ rand()
Sidor: 1
eilenna71 | 23:09 - 22:a Januari 2007 | Post #1 | |
Medlem Inlägg: 4 Skicka PM |
Hej! Hur gör jag för att slumpa fram tal i intervallet EUR"5000 .. 5000? Jag läste det som står på nybörjarkursen och testade det i mitt program (se rad 30), kruxet är att jag bara får ut negativa tal! Vad har jag gjort för fel? Skulle jag ha använt modulus istället? ,,r det någon som kan förklara skillnaden mellan div och mod vid rand-funktionen, när använder man det ena och när använder man det andra?
Hoppas det finns någon som kan hjälp mig, jag har testat lite olika kombinationer men får antingen till bara positiva tal eller negativa, aldrig både och... // ANI ------------------------- Ingen signatur! |
FunkyChicken | 00:43 - 23:e Januari 2007 | Post #2 | |
Nyhetsredaktör Inlägg: 800 Skicka PM |
Antar att du kapat indys rad rakt av, inget fel med det men det funkar tyvärr inte alltid. Fundera på hur den fungerar istället! rand() / (RAND_MAX / MAX_TAL + 1 ) ger dig ett tal mellan noll och 4999, sedan gör du + MIN_TAL dvs du drar bort 5000. Alltså blir resultatet negativt. Kanske bäst att nån som faktiskt sysslar med C++ slänger ett öga hitåt och ser till att jag inte pratar i nattmössan, men följande lilla modifiering borde ge dig önskat resultat: dyn_arr[i] = rand() / (RAND_MAX / (MAX_TAL - MIN_TAL) + 1 ) + MIN_TAL; (Tänk: Du har ett visst _intervall_ av tal, i detta fall 10'000 tal långt, och du vill att det ska börja på -5'000 ) Skillnaden mellan div och mod ("kongruensoperatorn") fungerar inte på något särskilt vis just vid användning med rand() utan precis som vanligt: division ger dig kvoten mellan två tal - speciellt får du ett avrundat svar om täljaren och nämnaren är heltal från början - och modulus ger dig RESTEN vid divisionen, dvs 10 % 4 = 2. Algebra är din vän. |
eilenna71 | 01:09 - 23:e Januari 2007 | Post #3 | |
Medlem Inlägg: 4 Skicka PM |
Yes! Det ser ut att funka, tack så mycket!!! Jag är lite mosig i hjärnan och hade missat hur det funkade, men med din förklaring klaffade det nästan på en gång. Jag var på vippen att missa det lilla minustecknet i min konstant MIN_TAL, så först tyckte jag att det såg konstigt ut att ta 5000 -5000 = 0... Men så kom jag på att det faktiskt var 5000 -(-5000) =10000 (som du skrev) ;o) Nu kan jag äntligen gå och sova! Det behövs verkligen... MVH // ANI ------------------------- Ingen signatur! |
Sidor: 1
Forum huvudsida -> Programmering -> C++ rand()
Du får inte posta i den här tråden | Till toppen
Datum
2024-12-22 15:04
Vecka: 51
Besökare
Inloggade: 0
Gäster: 605
Medlemmar
Medlemmar: 53576
Forum
Senaste inlägget: HAHA MÄNNISKAN LEVER ÄN (13:45 - 18:e Januari 2019, av Hetzz)
Wiki
Senaste ändringen:
3D (rev: 1, tid: 09:40 - 13:e November 2015)
Chatt
#blinkenlights @ Libera.Chat
Gratis shellkonton för IRC, webbsidor mm.