Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Formel für Zahlengenerator
#11
Guck' auch mal hier.

http://www.funkelwerk.de/library/index.p...athematics

der Abschnitt über "Asymptotic Formulas" könnte hilfreich sein.
Blogger blog blog
Zitieren
#12
Zitat:Original von Alexander Brose
  • 1 = Aktion 1 (6,6 %)
  • 2, 3 = Aktion 2 (13,4 %)
  • 4 - 6 = Aktion 3 (20 %)
  • 7 bis 10 = Aktion 4 (26,6 %)
  • 11 bis 15 = Aktion 5 (33,4 %)
Welche Programmiersprache verwendest du? Hoffe ich hab es nicht überlesen. Solltest du Javascript nehmen, neigt diese dazu den ersten und letzten Wert weniger anzuzeigen. Dein Berg könnte Möglicherweise in der Mitte keine Spitze haben.

Die Formel von Cruzer ist gut. Du kannst aber auch aus Cruzers Formel

n = 10^2 / rand

das machen:

Ergebnis = runden((10^2 / rand) * höchste_Zahl);

Edit: Wie Cruzer schon schrieb muss rand eine Zahl zwischen 1 und 9 sein.
Zitieren
#13
Zitat:Original von sojo
Welche Programmiersprache verwendest du? Hoffe ich hab es nicht überlesen. Solltest du Javascript nehmen, neigt diese dazu den ersten und letzten Wert weniger anzuzeigen. Dein Berg könnte Möglicherweise in der Mitte keine Spitze haben.
Eine Progammiersprache gibt es konkret nicht. Mich interessiert gegenwärtig eher die Theorie. Eine Spitze brauche ich nicht unbedingt.
Auch hier vielen Dank, Sven. Heute Abend probiere ich es mal aus. Smile

Es soll halt wie das Airbrush-Werkzeug vom alten MS Paint arbeiten. Nur dass in der Mitte eines Quadrates mehr Pixel platziert werden, als Richtung Rand.
Zitieren
#14
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
Zitieren
#15
Stimmt. Rolleyes Welch ein Quark. Big Grin Aber Quark macht stark!!! Wink

Meine Rechnung bringt keinen Vorteil.
Zitieren
#16
Zitat:Original von sojo
Meine Rechnung bringt keinen Vorteil.
Gibst du eine Runde Schwarzbier aus? Wink

Cruzer: Funktioniert prima. *verneig*
Zitieren
#17
Dann brauche ich ja auch nicht mehr suchen ;o)
Rechtschreibfehler sind gewollt und unterliegen dem Copyright des Verfassers, es sei denn, sie sind expliziet unter die GPL gestellt ....

Für "Simutrans-Nightlys" und aktuelle PAK: http://nightly.simutrans-germany.com
Zitieren
#18
Zitat:Original von wernieman
Dann brauche ich ja auch nicht mehr suchen ;o)
Nö, die Sache hat sich erledigt. Hast einen (mehr) gut bei mir, Werner. Wink
Zitieren
#19
Ich hab' die Links nicht verfolgt - evtl. kam's schon vor. Aber als Schnellschuss aus der Huefte:

Eine andere Moeglichkeit ist einfach mit 2 Zufallszahlen zu arbeiten.

Als Beispiel: Wenn man 2 Wuerfel nimmt (1-6) und die Zahlen addiert, ist die durchschnittlich haeufigste Zahl immer die 7, waehrend 2 und 12 am seltensten sind. Die Verteilung sieht dann z.B. so aus:

02: 2.60%
03: 5.27%
04: 8.41%
05: 11.49%
06: 14.07%
07: 16.80%
08: 13.72%
09: 11.29%
10: 8.09%
11: 5.58%
12: 2.68%
Zitieren


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste