Problem: Zufallszahlen sind konstant

Mr Apfelkuchen

Erfahrenes Mitglied
Hi at all,
also mein Problem ist, dass ich per rand()%7 Zahlen von 0-7 zufälllig bestimmen will. Das funktioniert auch super gut nur das Problem ist das das Programm immer die gleiche Kette von Zufallswerten ausgibt. Also immer wenn ich das Programm starte kommen die gleichen Zahlen in gleicher Reihenfolge. Warum?
 
Hallo,

das liegt daran, dass der Generator standardmäßig immer gleich initialisiert wird!!

Die Hilfe liefert hierzu folgenden Hinweis:

Code:
 /* Seed the random-number generator with current time so that
  * the numbers will be different every time we run. */
  */
   srand( (unsigned)time( NULL ) );

Gruß
Klaus
 
Danke sehr. Aber mit welchem argument bekomme ich den Wertebereich hin? %x?

und ich kann die void werte nicht in int konvertieren:(
 
Zuletzt bearbeitet:
Moin,

genau, Sie können alles wie bisher lassen - nur zuvor muss der Zufallsgenerator durch den Aufruf von srand(...) initalisiert werden.
Dies macht man dann in der Regel mit der time()-Fkt., um auch immer garantiert unterschiedliche Werte zu haben!
Um jedoch die Stelle zu zu debuggen reicht dann srand( 1), um immer die gleiche Zufallszahlenfolge zu bekommen.

Vielleicht hätte ich vorhin besser den gesamten Inhalt der Hilfe hierein kopiert:
Code:
Remarks

The srand function sets the starting point for generating a series of pseudorandom integers. To reinitialize the generator,
use 1 as the seed argument. Any other value for seed sets the generator to a random starting point. rand retrieves the
pseudorandom numbers that are generated. Calling rand before any call to srand generates the same sequence as calling 
srand with seed passed as 1.

Example

/* RAND.C: This program seeds the random-number generator
 * with the time, then displays 10 random integers.
 */

#include <stdlib.h>
#include <stdio.h>
#include <time.h>

void main( void )
{
   int i;

   /* Seed the random-number generator with current time so that
    * the numbers will be different every time we run.
    */
   srand( (unsigned)time( NULL ) );

   /* Display 10 numbers. */
   for( i = 0;   i < 10;i++ )
      printf( "  %6d\n", rand() );
}

Hoffe, ich konnte helfen :)

tschüss
Klaus
 
Zuletzt bearbeitet:
Äääh, wieso VOID ?

Sie erzeugen die Zufallszahlen in der von Ihnen deklarierten Variable!!
Also bspw.:
Code:
int iWerte[100];
srand( (unsigned)time( NULL ) );

for( int j = 1; j <= 100, j++ )
{
   iWerte[j] = rand() % 7;
}

tschüss
Klaus
 
Danek ne das void Problem kam durch den Aufruf:
Code:
i = srand((unsigned)time(NULL));
Aber hab es jetzt begriffen... danke:)
 
Hallo,
schön, dass ich helfen konnte :)

Du solltest das Thema dann bitte auch schließen (links unten über ERLEDIGT) !!

tschüss
Klaus
 
Hallo,
kann man das auch auf .NET übertragen?
Hab den Code einfach übernommen. Funktioniert aber nicht, da er die Bezeichner srand, rand und time nicht kennt.
Was kann ich machen?

MfG, warcraft9105
 
Moin warcraft,

kann ich Dir leider nicht genau sagen, da wir hier nicht mit .NET arbeiten.
Aber wenn die Bezeichner nicht bekannt sind, werden sie dort wohl anders heißen (möglicherweise randomize oder so war in der Art ...)

Da solltest Du dann mal im Handbuch oder in der Hilfe nachschlagen (Stichworte: Zufallszahlen, Zufallsgenerator etc.)

tschüss
Klaus
 
Das blöde ist nur, dass i kein Handbuch habe und meine Hilfe nicht richtig geht *lol*.
Und im .NET forum gibts keine Themen zu Zufallszahlen. Kannst du mir sonst noch i-welche Tipps geben?

Danke für deine schnelle Antwort.
 
Zurück