Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » ::random number::

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
09.12.2003, 10:51 Uhr
~ar43r
Gast


wie kann man 6-zahlige zufällige Zahl generieren?
mit 4-zahlige, hatte ich no problem, aber 6-, 7-, und 8- bringen äger.

zahl= (10000 * rand()) / RAND_MAX + 1000;

Das ist die Funktion, die 4-zahlige Zahl generiert.

Ich dachte, dass das:

zahl= (1000000 * rand()) / RAND_MAX + 100000;

6-zahlige generieren muss. Aber die macht das nicht, weil rand() MAX_WERT ist 32768 (((

Was macht man????????????????
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
09.12.2003, 10:59 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


das geht in dem du einfach hinreichend (tolles wort) viele zufies zusammenaddierst und danach dann ein modulo rüberjagst. Es sollten aber wirklich nicht zu wenig sein weil du dich sonst weit von einer gleichverteilung entfernst.
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
09.12.2003, 11:00 Uhr
virtual
Sexiest Bit alive
(Operator)


Der Wert von RAND_MAX ist nicht garantiert, deshalb ists nicht ganz einfach, da eine komplett protable Lösung zu finden. Ich würde mal sowas in der Art probieren:

C++:
zahl = (rand()%255)<<24+(rand()%255)<<16+(rand()%255)<<8+(rand()%255); // beliebige Zahl
zahl = zahl%900000 + 100000; //Erzwinge 6 stellen


--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
09.12.2003, 11:02 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


nimm lieber virtuals lösung die sollte performanter sein...
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
09.12.2003, 11:13 Uhr
~ar43r
Gast



Zitat:


C++:
zahl = zahl%900000 + 100000; //Erzwinge 6 stellen




das funktioniert nicht. Compiler gibt einen Fehler aus:
error C2296: '%' : Ungültig, da der linke Operand vom Typ 'float' ist


Bearbeitung von ao:
Fehlendes quote-tag ergänzt.

Dieser Post wurde am 09.12.2003 um 11:36 Uhr von ao editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
09.12.2003, 11:36 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


der gute virti hat ein paar klammern vergessen....


C++:
int main(){
srand(time(NULL));
unsigned int vorkommaanteil,nachkommaanteil;
double zahl;
vorkommaanteil = ((rand()%255)<<24)+((rand()%255)<<16)+((rand()%255)<<8)+(rand()%255); // beliebige Zahl
nachkommaanteil = ((rand()%255)<<24)+((rand()%255)<<16)+((rand()%255)<<8)+(rand()%255);
zahl = 100000 + vorkommaanteil%900000  + nachkommaanteil/pow(2,8*sizeof(unsigned int));
printf("%f\n",zahl);
return 0;
}


--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: