webForumDet fria alternativet

rand()

C/C++

4 svar · 186 visningar · startad av Jymdis

Medlem sedan mars 20016 260 inlägg
Frågan#1

Hej!

Använder rand() funktionen litegrann men får inte de tal jag förväntar å eftersom jag arbetar mot quake 3 källkoden så kan jag varken köra ut det nånstans så jag ser vad jag får för resultat eller köra det i debugern å få ut värdet där.

Koden är:

m_Random = rand()%2+1;

och det jag vill ha är 1 eller 2.
0 eller 1 hade också fungerat jag vill helt enkelt bara alternera mellan två nummer. Fast i fortsättningen ska det kunna gå att öka det ganska lätt.

Några förslag?

mvh
Jymdis

Medlem sedan okt. 20023 030 inlägg
#2

Nu är jag nybörjare på C/C++ men kan en del om andra programmeringsspråk och ska det inte stå

m_Random = rand()*2;

? Eller om jag inte har alldeles fel

m_Random = round(rand()*2);

? Tror tillochmed att man kan använda

m_Random = rand(1,2);
Medlem sedan dec. 20024 inlägg
#3

Du kan basera slumningen av tal på tiden genom att använda dig av:

srand(time(0));

och sedan skriva:

m_Random = (rand()%2+1);

include-filerna som behövs är följande:

#include <cstdlib>
#include <ctime>

Lycka till!

Medlem sedan mars 20016 260 inlägg
#4

srand fungerar inte i quake3 källkoden.
har dock fått det att fungera bara genom att öka %2 till %3 (vilket och passar i hur många alternativ jag ville ha)
tack för hjälpen

Medlem sedan maj 200221 inlägg
#5

% = modelus, resten ifrån en /
tex:
1%3 = 1 (1/3 = 0 och 1 i rest)
2%3 = 2 (2/3 = 0 och 2 i rest)
3%3 = 0 (3/3 = 1 och 0 i rest)
4%3 = 1 (4/3 = 1 och 1 i rest)

Bra sätt att begränsa så att något inte stiger upp och blir för högt.

257 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)