Zufallszahl
-
Hallo,
bin gerade dabei ein kleines Spiel zu programmieren, bei dem es darum geht eine Stadt aufzubauen. Man kann unter anderem Fabriken bauen, mit denen man Arbeitsplätze schafft. Nun sollen nach einer bestimmten Aktion zufällig eine Anzahl Arbeiter dazugezählt werden, welche aber:
1. nicht größer ist als die Einwohnerzahl
2. nicht größer ist als die ArbeitsplätzeIch habe es bisher soweit geschafft, dass nicht mehr Arbeiter als Arbeitsplätze dazugezählt werden. Aber wie binde ich die Einwohner noch mit ein?
srand(time(0);
Aplus=rand()%(Arbeitsplatz-Arbeiter+1);
Arbeiter=Arbeiter+Aplus;(Aplus steht für Arbeiterplus, also die die dazugezählt werden sollen)
Würde mich über Hilfe sehr freuen und bedanke mich schonmal im Vorraus.
Grüße,
alufolie003
-
Wenn die Bedingung ist, dass die Zahl nicht größer ist als die Einwohnerzahl und nicht größer ist als die Zahl der Arbeitsplätze ist, dann solltest du zuerst einmal das Minimum dieser beiden Zahlen herausfinden. Und dann machst du die Modulooperation mit diesem Minimum.
-
Schreibe dir eine Funktion "neue_arbeiter" der Du die entsprechenden Parameter übergibst und die zu erst die Grenzen ausrechnet, dann gibst du die neue Arbeiterzahl zurück.
Edit:
Zu langsam
-
Noch zwei kleine Anmerkungen:
* srand() solltest du nur einmal aufrufen und nicht bei jeder Spielrunde
* ich würde für die Obergrenze einen konstanten (eventuell auch zustandsabhängigen) Maximalwert für das Wachstum verwenden und den Zufallswert anschließend zurechtstutzen.