webForumDet fria alternativet

rand()

4 svar · 184 visningar · startad av Jymdis

JymdisMedlem sedan mars 20015 637 inlägg
#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

Nexus86Medlem sedan okt. 20022 683 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);
DippMedlem 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!

JymdisMedlem sedan mars 20015 637 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

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

Genererad på 372 ms · cache AV · v20260730165559-full.f96bc7eb