Forum: Fråga om slumptal.

Forum huvudsida -> Programmering -> Fråga om slumptal.

Sidor: 1

Till botten

IllusiOn 13:55 - 25:e Juli 2005 | Post #1
Medlem
Inlägg: 4


Skicka PM
Hej Smiley

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. Smiley

-------------------------
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 Smiley

-------------------------
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 Smiley



-------------------------
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. Smiley 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 Smiley 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(); Smiley . 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 Smiley.
    
    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 Smiley.

-------------------------
Ingen signatur!



Sidor: 1

Forum huvudsida -> Programmering -> Fråga om slumptal.
Atom feed

Du får inte posta i den här tråden | Till toppen