Zufallszahl

B

BassBox

Hi,
Ich such seit schon längerer zeit nach einer Zufallszahlen Funktion fur ein C++ Programm. Die die ich bisher versucht habe funktionieren nicht (das was ich bei Google gefunden habe). Ich weiß nicht ob das nicht vieleicht an meinem Compiler lingt (Dev-C++).
Könnt ihr mier vieleicht helfen?
LG BASSBOX
 
Hi.

Was heißt "die funktionieren nicht"?

Man muss es nur richtig machen.

C++:
void init_random() {
  static char initialized = 0;
  if (!initialized) {
    srand(time(NULL)); rand();
    initialized = 1;
  }
}

/* get integer random number in range a <= x <= e */
int irand( int a, int e)
{
    double r = e - a + 1;
    return a + (int)(r * rand()/(RAND_MAX+1.0));
}

int main() {
  init_random();

  int x  = irand(5, 10);
}
Gruß
 
Zuletzt bearbeitet:
Alternativ zu deepthroat's Vorschlag könntest du auch die Systemzeig von Windows nehmen in Mili-Sekunden und dann mit dem Modulo Operator (%) auf die Gewünschte grösse begrenzen.
Den genauen Namen der Funktion kenn ich leider nicht mehr aber er gehört zu time.h.

Gruss
 
Hi,

falls du 'bessere' Zufallszahlen brauchst (zum Beispiel für Kryptographische Zwecke), dann würde ich eher auf einen anderen Zufallszahlengenerator umsatteln.

In meinem Programm hole ich mir zum Beispiel ein paar Zufallszahlen (je nach System) aus der Win-Crypto-Api oder /dev/random, füttere damit den SFMT PRNG und hol mir aus dem dann meine Zufallszahlen raus.

PS: DevC++ ist kein Compiler ;) Es ist eine IDE, die als Compiler den gcc auf MingW32 Basis verwendet.

Gruß
BK
 
Hi,
Die die ich bisher versucht habe funktionieren nicht (das was ich bei Google gefunden habe). Ich weiß nicht ob das nicht vieleicht an meinem Compiler lingt (Dev-C++).
Könnt ihr mier vieleicht helfen?
LG BASSBOX

Oehm, sinnvoll waere deine Funktion auch mal zu posten, dann koennte man sicher helfen und sagen was falsch daran ist.
Obs an deinem Compiler liegt? Ich glaub hier ist keiner nen Hellseher.
 
Alternativ zu deepthroat's Vorschlag könntest du auch die Systemzeig von Windows nehmen in Mili-Sekunden und dann mit dem Modulo Operator (%) auf die Gewünschte grösse begrenzen.
Den genauen Namen der Funktion kenn ich leider nicht mehr aber er gehört zu time.h.
Genau das (den Modulo Operator benutzen) sollte man tunlichst unterlassen, da man dann schnell feststellt, dass die Zufallszahlen nicht gleichverteilt sind.

Fraglich ist auch ob die Systemzeit ein guter Zufallszahlengenerator ist. Da sie gleichmäßig fortschreitet wohl eher nicht.

Gruß
 
wie wärs mit:
rand(100);
das wäre zufallszahl zwischen 0-100

P.S. bin mir nicht sicher ob es der war
 
Woher sie stammt weiß ich auch nett aber in MSVC++ läuft sie einwandfrei kann sein das das nur mit diesem compiler läuft!!
Mehr weiß ich auch nett
außer das rand random bedeutet

MFG
 
Zuletzt bearbeitet:
Zurück