zufallszahlen?
-
also als erstes es sind in wirklichkeit keine zufalls zahlen sondern die "zeit"
hier wie du das schreibst:
(einfach abschreiben)srand(time(0));srand ist dann ein zufallswert jetzt musst du das auf eine variable übertragen:
int zufall=rand()%33;die 33 heißt das es nur bis 32 geht! nicht bis 33!
wenn du keinen festen wert willstint zufall=rand();ich hoffe ich konnt helfen

-
Ps: gibt es auch einen befehl um zu unterscheiden ob die Zahl gerade oder ungerade ist?
dads kannst du doch einfach mit
if(wert%2==0)
{
blabla();
}
das modul "%" rechnet dir den rest aus
-
ach ja time gehört zu
#include <time.h>
-
Hallo
Dying schrieb:
ach ja time gehört zu
#include <time.h>Auch wenn es nervt, aber ich würde <ctime> nehmen.
chrische
-
@Dying: Du Depp, hör mal auf mit den scheiß Doppelposts....
-
Dying schrieb:
srand(time(0));srand ist dann ein zufallswert jetzt musst du das auf eine variable übertragen:
int zufall=rand()%33;rand() ist niemals zufall, auch nicht mit 'srand(time(0))'
eigendlich müsste es 'pseudo_rand()' heissen...
-
rand() ist niemals zufall, auch nicht mit 'srand(time(0))'
eigendlich müsste es 'pseudo_rand()' heissen...Dann müsste es auch 'pseudo_time()' heissen

-
Moin, die Lösung mit rand() hast ja gesehen, time(0) oder time(NULL) gibt dir die Zeit in Sekunden seit ich meine 1970, einfach eine Zeit, die als Einstiegswert in eine Zahlenfolge dient. Lass dir rand(1) anzeigen, 10mal in Folge, und es müsste immer der Selber Wert kommen, ebenso bei rand(2) usw. Im Mittel wirkt die Folge zufällig, hat aber den Vorteil, das die Folge rekonstruierbar ist, falls man mal etwas testet und ein Fehler nur bei einigen Werten auftritt.
MfG Nemo
-
Dying schrieb:
also als erstes es sind in wirklichkeit keine zufalls zahlen sondern die "zeit"
hier wie du das schreibst:
(einfach abschreiben)srand(time(0));srand ist dann ein zufallswert jetzt musst du das auf eine variable übertragen:
int zufall=rand()%33;die 33 heißt das es nur bis 32 geht! nicht bis 33!
wenn du keinen festen wert willstint zufall=rand();ich hoffe ich konnt helfen

FULL ACK

-
versuchs mit randomize();
z.b.:
randomize(); ... z = random(8)+1; //Zufallszahl 1 - 9
-
Nur soweit ich weiß, sind randomize() und random() keine Standard-Funktionen - und dürfte intern auch wieder auf srand()/rand() zurückgreifen.
-
Nur zur Ergänzung, man kann sich auch gut eigenen Rand()-Funktionen basteln. Diese Funktion z.B. gibt schöne Aussgaben:
unsigned long Rand(const unsigned long& lRandSeed) { return ((lRandSeed * 214013L + 2531011L) >> 16) & 0x7fff; }
-
Bin noch ziemlicher anfänger...
wo muss ich denn dassrand(time(0));einsetzen?
außerdem kommt bei mir die Meldung:error C2501: 'srand' : Fehlende Speicherklasse oder Typbezeichner
helft mir pls
mfg Regire
Edit:ok den fehler hab ich jetzt weg...
ABER Neue Frage:
kann ich es einstellen, dass bei jedem aufruf der variablen eine neue zahl genommen wird?bei der time funktion geht das anscheinend niocht, da mein compi zu schnell rechnet

EDIT EDIT EDIT EDIT EDIT EDIT EDIT EDIT EDIT EDIT EDIT EDIT EDIT EDIT EDIT EDIT
so nach langem rumprobieren habe ich es endlich geschafft ein programm zu schreiben welches genug verschiedene Zufallszahlen erzeugt

Ich sag nochma danke an alle

mfg Regire
PS: diesen thread bitte /closed markieren

-
Auch wenn du's schon gelöst hast, nochmal die Erklärung für alle anderen:
Regire schrieb:
Bin noch ziemlicher anfänger...
wo muss ich denn dassrand(time(0));einsetzen?
außerdem kommt bei mir die Meldung:error C2501: 'srand' : Fehlende Speicherklasse oder Typbezeichner
Du brauchst die Header <cstdlib> (für rand() und srand()) und <ctime> (für time()) bzw. zur Not ihre C-Entsprechungen.
kann ich es einstellen, dass bei jedem aufruf der variablen eine neue zahl genommen wird?
Ja, srand() muß nur einmal am Anfang des Programms aufgerufen, danach kannst du den Zufallsgenerator einfach laufen lassen. (srand() setzt den Startwert für den nächsten rand()-Aufruf - und wenn du 10mal in der Sekunde neu initialisierst, holst du dir jedes Mal den Startwert der selben Zufallsfolge)