Du bist nicht eingeloggt.

Login

Pass

Registrieren

Community
Szene & News
Locations
Impressum

Forum / Bits und Bytes

C++ Zufallszahlen

  -1- -2- vorwärts >>>  
ManuULM - 38
Experte (offline)

Dabei seit 05.2003
1116 Beiträge

Geschrieben am: 01.07.2007 um 20:52 Uhr

Muss in der Schule ein Spiel Programmieren....

Bin jetzt an einer Stelle wo der Computer zwichen 1-4 Schritte gehen kann...

Zitat:

int computerZug=anzahlDerZuege%4;
if(computerZug==0)
anzahlDerZuege=anzahlDerZuege+1;


Hab das jetzt mal so im Internet gefunden "anzahlDerZuege%4" ...so meine Frage ist, wasmacht der Befel "anzahlDerZuege%4" anders wie als wenn ich es mit diesem machen würde "anzahlDerZuege = random(4)". Hab das mit dem % nämlich noch nie gesehen...

Hoffe meine Frage ist verstänlich :-)

[DJ K-FLOW | FLOW PRODUCTIONS]

h3mpti - 38
Profi (offline)

Dabei seit 05.2007
878 Beiträge

Geschrieben am: 01.07.2007 um 21:00 Uhr

% bedeutet modulo division, also eine ganzzahl division die den rest zurück gibt.
Beispiel:
5 % 4 = 1, da bei der division der rest 1 übrig bleibt.
warlock - 38
Profi (offline)

Dabei seit 11.2005
446 Beiträge

Geschrieben am: 01.07.2007 um 21:03 Uhr

seh da kein zufalls konstrukt

mag daran liegen das der code ausschnit aleine recht aussage los ist.

wenn die anzahlderZuege durch 4 geteilt den rest null ergibt wird die anzahl der zuege um eins erhöht. wodurch der computer aber immer nur einen zug machen kann.

oder seh ich da was falsch

Kaffee ohne Koffein ist wie seine Schwester zu lecken. Schmeckt richtig, ist aber falsch.

SpongeBernd - 34
Champion (offline)

Dabei seit 06.2006
2277 Beiträge

Geschrieben am: 01.07.2007 um 21:04 Uhr

nur mal so: was wird das für ein Spiel? und warum gerade in C++ ... das geht doch auch einfacher..
ManuULM - 38
Experte (offline)

Dabei seit 05.2003
1116 Beiträge

Geschrieben am: 01.07.2007 um 21:05 Uhr

ich hab das in ner schleife, d.h. der vorgang wird bei jeden zug wiederholt...
aber so wie ich das verstehe, würde ja dann bei der modulo division jedes mal das selber ergebnis raus kommen... tut es aber nicht, es kommt manchmal ne 1, ne 2 oder ne 3 raus

[DJ K-FLOW | FLOW PRODUCTIONS]

timothy78 - 47
Anfänger (offline)

Dabei seit 05.2006
6 Beiträge
Geschrieben am: 01.07.2007 um 21:07 Uhr

genau das ... was mein Vorgänger geschrieben hat ...

Dazu nen kleiner Auszug aus der manpage:

NAME
random, srandom, initstate, setstate - random number generator

SYNOPSIS
#include

long int random(void);
void srandom(unsigned int seed);
char *initstate(unsigned int seed, char *state, size_t n);
char *setstate(char *state);

DESCRIPTION
The random() function uses a non-linear additive feedback random number
generator employing a default table of size 31 long integers to return
successive pseudo-random numbers in the range from 0 to RAND_MAX. The
period of this random

also random() allein erzeugt die ne Zufallszahl zwischen 0 und RAND_MAX
-> random()%4 ne Zufallszahl zwischen 0 und 3
-> random()%4+1 ne Zufallszahl zwischen 1 und 4

falls du nicht immer die gleiche Folge von 'Zufallszahlen' haben willst, nicht vergessen vorher den seed vie srandon zu setzem. Am einfachsten geht das imo mit

srandom(time(NULL)) ...

wenn du das nicht machst ist der seed standardmässig 1, d.h. wie oben gesagt bekommst du immer die gleiche Folgen von Zufallszahlen.

Gruss,
timothy78


ManuULM - 38
Experte (offline)

Dabei seit 05.2003
1116 Beiträge

Geschrieben am: 01.07.2007 um 21:07 Uhr

Zitat von SpongeBernd:

nur mal so: was wird das für ein Spiel? und warum gerade in C++ ... das geht doch auch einfacher..


so ein "Nimm-Spiel2, allerdings mit klassen...
ausschnitt aus der aufgabenstellung:

Zitat:

...Es werden z.B. 20 (Anzahl kann beliebig angegeben werden) Steichhölzer auf den Tisch gelegt, und die beiden Spieler (Spieler 1 Mensch und Spieler 2 der Computer) dürfen abwechselnd eine, zwei oder drei Steichhölzer nehmen...


[DJ K-FLOW | FLOW PRODUCTIONS]

warlock - 38
Profi (offline)

Dabei seit 11.2005
446 Beiträge

Geschrieben am: 01.07.2007 um 21:08 Uhr

wird die variable anzahlZuege innerhalb der schleife deklariert? weil wenn ja dann würde das sinn machen

Kaffee ohne Koffein ist wie seine Schwester zu lecken. Schmeckt richtig, ist aber falsch.

ManuULM - 38
Experte (offline)

Dabei seit 05.2003
1116 Beiträge

Geschrieben am: 01.07.2007 um 21:09 Uhr

ok danke, dan versuch ich das mal ;-)

[DJ K-FLOW | FLOW PRODUCTIONS]

ManuULM - 38
Experte (offline)

Dabei seit 05.2003
1116 Beiträge

Geschrieben am: 01.07.2007 um 21:10 Uhr

hab was bei google gefunden ;-)
Das ist ein Link

[DJ K-FLOW | FLOW PRODUCTIONS]

warlock - 38
Profi (offline)

Dabei seit 11.2005
446 Beiträge

Geschrieben am: 01.07.2007 um 21:15 Uhr

joa dann is klar

da anzahl zuege ned initaliisiert wird, hat es einen random inhalt.
durch die modolo aktion wird dann der wert zu 0-3 gemacht

Kaffee ohne Koffein ist wie seine Schwester zu lecken. Schmeckt richtig, ist aber falsch.

timothy78 - 47
Anfänger (offline)

Dabei seit 05.2006
6 Beiträge
Geschrieben am: 01.07.2007 um 21:16 Uhr

das ja blöd ... da spielt der Computer ja die optimale Strategie, d.h. du kanns als Gegner nur gewinnen, wenn du

1. anfängst und
2. auch diese Strategie fährst ...

Gruss,
timothy78
warlock - 38
Profi (offline)

Dabei seit 11.2005
446 Beiträge

Geschrieben am: 01.07.2007 um 21:22 Uhr

arx total verpeilt.

gibt kein zufall dahinter da nent sich ki

Kaffee ohne Koffein ist wie seine Schwester zu lecken. Schmeckt richtig, ist aber falsch.

MurseL_LA - 37
Fortgeschrittener (offline)

Dabei seit 11.2005
62 Beiträge
Geschrieben am: 01.07.2007 um 21:34 Uhr
Zuletzt editiert am: 01.07.2007 um 21:36 Uhr

Zitat von ManuULM:

ich hab das in ner schleife, d.h. der vorgang wird bei jeden zug wiederholt...
aber so wie ich das verstehe, würde ja dann bei der modulo division jedes mal das selber ergebnis raus kommen... tut es aber nicht, es kommt manchmal ne 1, ne 2 oder ne 3 raus


doch, es muss nicht immer 1 rauskommen!!!

schau doch

24 % 7 = 3, d.h. es kommt nicht immer null raus!!

Elite braucht kein Motto, man lebt es einfach, weil man als Elite geboren wird!

warlock - 38
Profi (offline)

Dabei seit 11.2005
446 Beiträge

Geschrieben am: 01.07.2007 um 21:36 Uhr

dann nimt sich der pc auch 3 und ned nur 1

Kaffee ohne Koffein ist wie seine Schwester zu lecken. Schmeckt richtig, ist aber falsch.

uwebaier - 36
Halbprofi (offline)

Dabei seit 06.2005
124 Beiträge

Geschrieben am: 01.07.2007 um 22:07 Uhr
Zuletzt editiert am: 01.07.2007 um 22:10 Uhr

Ich hätt da auch ne Frage:

Ich mach auch grad was mit Zufall aber ab und zu ergeben sich absolute Müllzahlen. Um es zu verdeutlichen poste ich mal hier den Quelltext und gebe hier den download von dem Prog an. ich hoffe jemand kann mir helfen.....



int farbe[5][2], spieler=0, karte=0, ablauf=18;
float wert[5][2];
for (ablauf=18; ablauf>0; ablauf--)
{
farbe[spieler][karte]=1+random(4);
wert[spieler][karte]=7+random(5);
karte++;
if (karte>2)
{
spieler++;
karte=0;
}
}




Die Ausgabe Poste ich jetz nich, thx for every help

UT3 Sucks ^^

  -1- -2- vorwärts >>>
 

Forum / Bits und Bytes

(c) 1999 - 2026 team-ulm.de - all rights reserved - hosted by ibTEC Team-Ulm

- Presse - Blog - Historie - Partner - Nutzungsbedingungen - Datenschutzerklärung - Jugendschutz -