Forum huvudsida -> Programmering -> Fråga om slumptal.
Sidor: 1
IllusiOn | 13:55 - 25:e Juli 2005 | Post #1 | |
Medlem Inlägg: 4 Skicka PM |
Hej förlåt om detta är en dum fråga, eller om ni har svarat på den någon annan stans. men jag blir lite galen över detta och måste veta innan jag skjuter någon. jag började med programering igår och jag förstår allt i guiden om c++ utom en sak... #include <iostream> #include<ctime> using namespace std; int main() { srand(time(0)); int iSlumptal; iSlumptal = rand() / (RAND_MAX / 6 + 1) + 1; cout << "Ett slumptal tal: " << iSlumptal; cin.get(); return 0; } varje gång jag kör denna blir "slumptalet" 5. vet inte, men det kanske ska vara så, men då tappar ju det poängen en aning. Tack för ett svar. ------------------------- Ingen signatur! |
HärJ | 14:03 - 25:e Juli 2005 | Post #2 | |
Moderator Inlägg: 1198 Skicka PM |
randomize timer... vet inte hur man gör det i c++ men det är det som är felet ------------------------- Tänk om jag vore en skalärprodukt! |
IllusiOn | 14:14 - 25:e Juli 2005 | Post #3 | |
Medlem Inlägg: 4 Skicka PM |
ok. hmmm.. ändå kopierade jag koden från guiden(nästan, jag skrev using namespace std istället för det andra.) ------------------------- Ingen signatur! |
void | 19:28 - 25:e Juli 2005 | Post #4 | |
Medlem Inlägg: 63 Skicka PM |
rand() % MAX + 1 ger ett tal mellan ett och MAX (inkl.) ------------------------- Ingen signatur! |
jakeru | 10:04 - 26:e Juli 2005 | Post #5 | |
Medlem Inlägg: 1 Skicka PM |
,,r du säker på att talet blir 5 varje gång? Jag testade nämligen själv och lade uttrycket i en loop och fick tal mellan 1 och 6 vilket jag antar är precis det du vill ha. ------------------------- Ingen signatur! |
IllusiOn | 11:11 - 26:e Juli 2005 | Post #6 | |
Medlem Inlägg: 4 Skicka PM |
jag använder mig av devcpp, och när jag använder mig av det behöver jag bara trycka på "kompilera och kör", så kompilerar han koden och kör. och om jag kör koden så får jag en siffra mellan 1-6 vilket är meningen, men om jag stänger ner det och sedan komplilerar och kör(eller bara kör) igen så blir det samma siffra som förra gången hur många gånger man än gör det. Dock märkte jag idag att om man stänger av devcpp och sedan startar det igen får man en annan siffra av koden först, men sedan samma som den ända tills man startar om devcpp igen. ------------------------- Ingen signatur! |
void | 16:19 - 26:e Juli 2005 | Post #7 | |
Medlem Inlägg: 63 Skicka PM |
Om du kompilerar i release och inte debugmode då? ------------------------- Ingen signatur! |
Bredberg | 16:41 - 26:e Augusti 2005 | Post #8 | |
Medlem Inlägg: 25 Skicka PM |
Har precis samma problem som den här trådens skapare. I både Borland och Dev C++ uppstår problemet. När man startar om och kompilerar om koden blir det olika, men sen när man kör .exe filen blir det samma tal... Någon som har några ideer? Nu går vi till botten med det här ------------------------- Allt som står i fältet ovan är totalt befriat från upphovsrätt, intelligens och ofta mening. Däremot är texten sällan fri från stavfel. |
FunkyChicken | 20:14 - 26:e Augusti 2005 | Post #9 | |
Nyhetsredaktör Inlägg: 800 Skicka PM |
Som void sa, säkra på att ni inte är i debugmode? |
Bredberg | 21:26 - 26:e Augusti 2005 | Post #10 | |
Medlem Inlägg: 25 Skicka PM |
Citat av FunkyChicken: Som void sa, säkra på att ni inte är i debugmode? Absolut inte. Hur ändrar man det? ------------------------- Allt som står i fältet ovan är totalt befriat från upphovsrätt, intelligens och ofta mening. Däremot är texten sällan fri från stavfel. |
Burglar | 00:45 - 27:e Augusti 2005 | Post #11 | |
Medlem Inlägg: 59 Skicka PM |
Arbetar ni i VS++ så tryck bara F5-tangenten så kompileras, länkas och gud vet vad LMAO. Då är du inte i 'debugmode', vill du debugga så kan du trycka på knappen med den "lilla blå pilen som pekar IN i en text". #include <iostream> #include<ctime> using namespace std; int main() { srand((unsigned)time(NULL)); int iSlumptal; for(int i =0; i<30; ++i) { iSlumptal = 1 + rand()%6; cout << "Ett slumptal tal: " << iSlumptal << "n"; } cin.get(); return 0; } [\CODE] denna koden funkar utmärkt iaf ------------------------- ,,hh signatur! jag är skeptisk! Senast redigerad 00:46 - 27:e Augusti 2005 |
Bredberg | 23:51 - 27:e Augusti 2005 | Post #12 | |
Medlem Inlägg: 25 Skicka PM |
Tack Burglar, ska prova din kod där. Men ändå skulle det va bra att veta hur man ändrar till "release mode" i Dev C++. ------------------------- Allt som står i fältet ovan är totalt befriat från upphovsrätt, intelligens och ofta mening. Däremot är texten sällan fri från stavfel. |
Celeron | 18:38 - 28:e Augusti 2005 | Post #13 | |
Medlem Inlägg: 418 Skicka PM |
Ni har rätt. Jag fick samma problem när jag provade koden i Dev-C++ fast för mig blev det 3 istället. ------------------------- Det viktigaste är att ha roligt! Har ny hemsida: http://www.freewebs.com/cpperik/ |
Independence | 19:59 - 28:e Augusti 2005 | Post #14 | |
Administratör Inlägg: 1800 Skicka PM |
Kör ni srand() med time() i for-loopen så ska det bli olika då den baserar seedet beroende på vilken tid det är, tror jag. Om den hinner köra flera i samma sekund (eller är det nanosekund?) blir det kanske värre, då kan man t ex lägga till variabeln i också så blir det lite bättre "slumpvärde". ------------------------- Vi är riddarna som säger fiskbulle! |
Bredberg | 20:30 - 28:e Augusti 2005 | Post #15 | |
Medlem Inlägg: 25 Skicka PM |
Hummmm... inte för att jag är 100% på hur det funkar men det här funkar ialf om man som jag vill ha ett tal mellan 1 och 3. int main() { srand((unsigned)time(NULL)); int iSlumptal; for(int i =0; i<30; ++i) { iSlumptal = 1 + rand()%3; } cout <<"\slumptal: " << iSlumptal; cin.get(); cin.get(); return 0; } Det borde väl finnas något enklare sätt. Det du Independence pratar om i delen slumptal, varför funkar inte det? ------------------------- Allt som står i fältet ovan är totalt befriat från upphovsrätt, intelligens och ofta mening. Däremot är texten sällan fri från stavfel. |
Celeron | 20:34 - 28:e Augusti 2005 | Post #16 | |
Medlem Inlägg: 418 Skicka PM |
Okej. Jag har löst det: cstdlib ska inkluderas när man använder rand(); och srand(); . Men det funkar ändå inte med raden iSlumptal = rand() / (RAND_MAX / 6 + 1) + 1; utan det ska vara: iSlumptal = rand()%6+1; ------------------------- Det viktigaste är att ha roligt! Har ny hemsida: http://www.freewebs.com/cpperik/ |
Bredberg | 20:50 - 28:e Augusti 2005 | Post #17 | |
Medlem Inlägg: 25 Skicka PM |
Otroligt, tack Celeron... är du verkligen 12 år? Börja du programera när du va runt 2 eller? /target Celeron /bow ------------------------- Allt som står i fältet ovan är totalt befriat från upphovsrätt, intelligens och ofta mening. Däremot är texten sällan fri från stavfel. |
Lajnold | 01:16 - 29:e Augusti 2005 | Post #18 | |
Medlem Inlägg: 65 Skicka PM |
Båda raderna fungerar, med samma resultat. Den översta är dock bättre av vissa anledningar (http://www.eskimo.com/~scs/C-faq/q13.16.html). Och (no offence, Celeron) det här är inget avancerat. Så Celeron behöver inte ha programmerat C/C++ mer än några dagar/veckor för att ha den hör typen av kunskap, beroende på hur lätt han har för att lära och ifall han har erfarenhet av andra språk. ------------------------- Ingen signatur! |
Celeron | 06:59 - 29:e Augusti 2005 | Post #19 | |
Medlem Inlägg: 418 Skicka PM |
Jag är 13 år nu (fyllde år i sommar). Jag har programmerat C++ sedan jag var 11. Den översta raden funkar inte för mig. Det blir bara samma tal hela tiden! ------------------------- Det viktigaste är att ha roligt! Har ny hemsida: http://www.freewebs.com/cpperik/ |
void | 09:35 - 29:e Augusti 2005 | Post #20 | |
Medlem Inlägg: 63 Skicka PM |
Celeron, precis... se mitt inlägg i början... =) ------------------------- Ingen signatur! |
Lajnold | 14:38 - 29:e Augusti 2005 | Post #21 | |
Medlem Inlägg: 65 Skicka PM |
Som sagts tidigare så beror det troligtvis på att ni kör debug-builds. ------------------------- Ingen signatur! Senast redigerad 15:13 - 29:e Augusti 2005 |
Bredberg | 16:03 - 29:e Augusti 2005 | Post #22 | |
Medlem Inlägg: 25 Skicka PM |
Citat av void: Celeron, precis... se mitt inlägg i början... =) Såg inte det förren nu, ingen lyssnar på dig . Citat av Lajnold: Som sagts tidigare så beror det troligtvis på att ni kör debug-builds. Alla säger det, men ingen verkar veta hur man kör realese i Dev-C++ eller Borland... ------------------------- Allt som står i fältet ovan är totalt befriat från upphovsrätt, intelligens och ofta mening. Däremot är texten sällan fri från stavfel. |
Celeron | 16:26 - 29:e Augusti 2005 | Post #23 | |
Medlem Inlägg: 418 Skicka PM |
Jag tror inte att det finns något relese eller debug mode i Dev-C++. Det står inget om det i hjälpen så jag tror att den kompilerar i relese mode alltid. ------------------------- Det viktigaste är att ha roligt! Har ny hemsida: http://www.freewebs.com/cpperik/ |
IllusiOn | 00:16 - 3:e September 2005 | Post #24 | |
Medlem Inlägg: 4 Skicka PM |
Hej, igen och Tack! nu blir det olika tal varje gång. Tackar, tackar. jag tror att felet var att jag hade: srand(0); istället för srand((unsigned)time(NULL)); hur som helst så tackar jag så mycket för er vänlighet . ------------------------- Ingen signatur! |
Sidor: 1
Forum huvudsida -> Programmering -> Fråga om slumptal.
Du får inte posta i den här tråden | Till toppen
Datum
2024-12-22 14:26
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.