11-01-2010, Monday-19:57:15
Zitat:Original von sojo
Ergebnis = runden((10^2 / rand) * höchste_Zahl);
Edit: Wie Cruzer schon schrieb muss rand eine Zahl zwischen 1 und 9 sein.
Naja dann versuch mal das: deine gewünschte Höchstzahl ist z.b.: 500
Das Höchstmögliche Ergebnis ist dann 10^2 / 10 * 500 = 5000
Damit deine Rechnung stimmt, müsstest du die Höchstzahl noch durch 10 rechnen. Dann hast du wieder etwas zu kürzen, und kommst wieder auf meine Ursprungsformel:
"Ausgabezahl = Höchstzahl² / Zufallszahl" bzw. "n = höchste_Zahl² / rand. (Wobei die Zufallszahl größer als 0 und kleiner gleich der Höchstzahl sein muss.)
Um das ganze zum Beispiel in C zu schreiben:
Code:
int squareRand(int maximumValue)
{
return ( maximumValue * maximumValue ) / ( rand() * ( maximumValue - 1) + 1 );
}
Ex-Entwickler und Gründer des pak192.comic, Betreiber von Simutrans Hosting