Random Zahl in C

pchero

Ensign
Registriert
Juni 2006
Beiträge
170
Hey Ho

ich habe da ein Problem und zwar habe ich einen PIC Controller und da brauch ich in einem Takt 4 Random Zahlen. Dazu steht allerdings nur die Standad sachen zur Verfügung also * - + / und % und Math.h habe ich da auch nicht ! Und die zahl muss auch nur Einstellig sein also nur von 0-9 ne Zufällige Zahl!

Code:
init Random()
{
   rand_time=rand_time*rand_time*rand_time;

    while(rand_time>10)
     {
         rand_time=rand_time/2;
     }
   return (rand_time-5);
}

sö wäre meine Idee gewesen klappt aber net bzw nicht Zufällig genug !
Hat noch jemand ne iDee `?


MFG
 
hmm warum benutzt du nicht einfach srand und rand() !?

Initialisierung
Code:
srand (time(NULL)); // Intialisierung der srand Funktion  //
cout << rand() << endl; // Ausgabe der Zufallszahl //

Funktion mit definiertem Wertebereich (hier 49 weil Lottobeispiel ;))
Code:
srand (time(NULL));
cout << rand()%49 << endl;

Willst du zum Beispiel 6 Zufallszahlen (wieder Lotto)

Code:
srand (time(NULL));

for (int x=1;x<=6;x++)
{
  cout << rand()%49 << endl;
}

Findet man per Google bei tutorials.de (Registrierung notwendig)

Sollte das in deinem Fall nicht zutreffen, dann guck mal bei mikrocontroller.net

Ansonsten hier noch ein Beispiel, das nicht von der Systemzeit abhängig ist.
 
Zuletzt bearbeitet:
Rand und sRand liegt leider nicht prat bei Unserem Compiler bzw die Funktion kennt er/der PIC erst garnicht Also Muss ich das Selbst schreiben

mFG
 
Guck dir mal den letzten Link an, der funktioniert ohne srand. Die haben in dem Beispiel nur zufällig der Funktion den glecihen Namen verpasst.
 
hmm Joa angeschaut bloß wie bekomme ich daraus jetzt einen werT Zwischen 0 und 9 ??

denn das gibt mir ja nen Wert zwischen 0 255

MFG
 
Wenn du eine Rechenoperation mit dem Modulo (%) errechnest, wird durch die Zahl geteilt und dann der Rest angezeigt.

Angenommen, dein Random schmeißt dir ein 255 raus.
Bsp: 255%8= 7, Denn 255/8 = 31 rest 7

In Code:
Code:
cout << rand()%8 << endl;
Wenn du jetzt eine beliebig große Zufallszahl hast, und mit Modulo verrechnest, kann das Ergebnis nur kleiner der gewählten Zahl sein.
 
Modulo zusammen mit Zufallszahlen ist aber sehr gefährlich, jenachdem welche Anforderungen man an seine Zufallszahlen stellt.

Denn wenn die Anzahl der möglichen Zufallszahlen (bei rand -> RAND_MAX+1) nicht durch den Wert teilbar ist, mit dem Modulo gerechnet wird, sind die Restklassen ungleichmäßig verteilt, sprich manche "Zufallszahlen" kommen öfter vor als andere. Gerade wenn man eine Gleichverteilung erwartet, ist das ein Problem.
 
Zurück
Oben