![]() |
Re: Wertebereich von -X bis +X erstellen ?
Wie bereits in #9 gesagt: Vegiss bitte dieses "iSigns[Random(2)]" - das bevorzugt die Null und verfälscht daher das Ergebnis. (Die null wird doppelt so oft gezogen wie andere Zahlen da minus null gleich plus null)
Ich weis zwar nicht, inwieweit das dein Ergebnis beinflusst, aber naja ;) Wenn du willst, kann ich dir auch ne Funktion schreiben, die einen zufälligen Vektor mit dem Betrag r (also zufällige Richtung bei bestimmten betrag) ausspuckt ;) Oder alternativ zufällige Richtung und Bertag zwischen rmin und rmax ;) |
Re: Wertebereich von -X bis +X erstellen ?
Wenn du Langeweile hast, kannst du nem altem Man so etwas antun. :mrgreen:
|
Re: Wertebereich von -X bis +X erstellen ?
Okay, dann will ich das mal tun :P
Delphi-Quellcode:
Da ich kein Delphi hab, Code ohne Compilierbarkeits-garantie ;)
TVector3D = record
X, Y, Z: Double; end; function RandomFromTo(minRange, maxRange: Double): Double; begin Result := Random() * (maxRange - minRange) + minRange; end; // Random liefert eine Zahl zwischen 0 und 1 ??? function RandomPoint(minRadius, maxRadius: Double): TVector_3D; const PI = 3.1415926535; var r, phi, theta: Double begin r = RandomFromTo(minRadius, maxRadius); phi = RandomFromTo(0, 2*PI); theta = RandomFromTo(0, PI); Result.X = r * sin(theta) * cos(phi); Result.Y = r * sin(theta) * sin(phi); Result.Z = r * cos(theta); end; Die Funktion sollte dann entsprechend Punkte ausspucken, deren Betrag in den Grenzen liegt, und eine zufällige Richtung haben. Das kann man natürlich umso besser sehen, je mehr Punkte du erstellst ;) Btw.: zum Testen kannst du ja einmal statt -PI eine Null einsetzen, dann sollte es nur eine Halbkugel werden ... |
Re: Wertebereich von -X bis +X erstellen ?
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
:thumb: |
Re: Wertebereich von -X bis +X erstellen ?
Freut mich, geholfen zu haben :)
Es ist aber leider noch ein kleiner Fehler drin: Laut Wikipedia sollte phi im Intervall 0 bis 2*Pi sein und theta von 0 bis Pi. Und wenn du dann ein Intervall halbierst sollte tatsächlich eine Halbkugel rauskommen und kein Kreis. Der sollte dann kommen, wenn du theta gleich Pi/4 setzt ... und ein Halbkreis, wenn du stattdessen phi konstant setzt :mrgreen: Dann stimmts übrigens auch mit dem Bild: ![]() |
Re: Wertebereich von -X bis +X erstellen ?
Moin, moin,
so dann werfe ich auch mal meine Randomformel in den Thread !
Delphi-Quellcode:
Grüße // Martin
function MyRandom ( High : integer; { Oberer Wert (+100) }
Shift : integer; { Verschiebung (- 50) } n : Integer; [ Anzahl } MyMemoLines : TStrings ( Vom Memo nebenan) ) ) var int : Integer; i : Integer; // Generiert eine integer random Nummer zwischen 1..High und verschiebt um Shift for i := 1 to n do begin int := 1 + Random(abs(High) ); // Der 100 Wert würde einen Bereich von 0..99 ergeben, deshalb +1 int := int + Shift; MyMemoLines.add ('n: ' + inttostr(n) + ' Random: '+IntToStr(int) ); end; end; |
Re: Wertebereich von -X bis +X erstellen ?
Bevor ich es vergesse, danke. :thumb:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:07 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz