Die Zufallszahlen aus der rand- Funktion sind keine wirklichen Zufallszahlen, eher Pseudo-Zufallszahlen. Sie wiederholen sich bei jeder Neustart der Funktion, da sie im System hinterlegt sind. Besser ist es, die rand- Funktion mit etwas veränderlichem zu verbinden, wie z.B. mit der Systemzeit.Unten ist so eine Verknüpfung zu sehen, die ich gerne benutze.
Das ist eine etwas ausführliche Lösung, es geht natürlich auch wesentlich kompakter. Bei diesem Programm geht es eher um d. Verstehen auch für nicht C- Leute
Bei jeder Funktionsaufruf wird srand mit der Systemzeit initialisiert, d.h. es kommen jedesmal andere Werte raus. Die Variable Zufallsgrenze gibt den grösstmöglichen Zufallswert wieder. Null kann nicht Vorkommen, wenn doch gewünscht, einfach in der Funktion Zufall_f ändern.

Ich habe hier auf der Arbeit leider kein Visual C++, aber es müsste laufen ))


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

int Zufall_f (int Zufallsgrenze);

int Zufallsgrenze=8;
int Zufallszahl=0;

void main (void)
{
srand ((unsigned)time(NULL));
Zufallszahl = Zufall_f (Zufallsgrenze);
printf(„Zufallszahl: \t\t %i \n\n“, Zufallszahl);
}


int Zufall_f (int Zufallsgrenze)
{
int Grenze,Pruef=1,c, Zahl=0;

Grenze = Zufallsgrenze+1;
for (c=0;Pruef==1;c++)
{
Zahl = rand ()%Grenze;
if (Zahl==0)
Pruef=1;
else
Pruef=2;
}

return Zahl;
}


Bei Fragen einfach mailen per PN ))

Schöne Grüße:
Z