AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Wertebereich von -X bis +X erstellen ?
Thema durchsuchen
Ansicht
Themen-Optionen

Wertebereich von -X bis +X erstellen ?

Ein Thema von turboPASCAL · begonnen am 18. Okt 2008 · letzter Beitrag vom 3. Nov 2008
Antwort Antwort
Seite 3 von 3     123   
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#21

Re: Wertebereich von -X bis +X erstellen ?

  Alt 29. Okt 2008, 16:00
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
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#22

Re: Wertebereich von -X bis +X erstellen ?

  Alt 29. Okt 2008, 16:48
Wenn du Langeweile hast, kannst du nem altem Man so etwas antun.
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#23

Re: Wertebereich von -X bis +X erstellen ?

  Alt 29. Okt 2008, 17:09
Okay, dann will ich das mal tun

Delphi-Quellcode:
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;
Da ich kein Delphi hab, Code ohne Compilierbarkeits-garantie

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 ...
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#24

Re: Wertebereich von -X bis +X erstellen ?

  Alt 29. Okt 2008, 18:25
Zitat von jfheins:
Okay, dann will ich das mal tun
Hui, nett.

Zitat von jfheins:
Code:
[b]const[/b]
  [color=#ff0000]PI[/color] = 3[color=#ff0000][b],[/b][/color]1415926535;
Zu viel C .net ? Pi ist in Delphi definiert.


Zitat von jfheins:
Da ich kein Delphi hab, Code ohne Compilierbarkeits-garantie
Och, das wird schon.

Zitat von jfheins:
Die Funktion sollte dann entsprechend Punkte ausspucken, deren Betrag in den Grenzen liegt, und eine zufällige Richtung haben.
Eine schöne runde Kugel.

Zitat von jfheins:
Das kann man natürlich umso besser sehen, je mehr Punkte du erstellst
Logisch. aber der Rechenaufwand wird grösser was dan beinstarten dauert.

Zitat von jfheins:
Btw.: zum Testen kannst du ja einmal statt -PI eine Null einsetzen, dann sollte es nur eine Halbkugel werden ...
Eher ein Ring, gelle.

Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#25

Re: Wertebereich von -X bis +X erstellen ?

  Alt 29. Okt 2008, 19:07
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

Dann stimmts übrigens auch mit dem Bild: http://de.wikipedia.org/w/index.php?...inaten_svg.png
  Mit Zitat antworten Zitat
Benutzerbild von mschaefer
mschaefer

Registriert seit: 4. Feb 2003
Ort: Hannover
2.032 Beiträge
 
Delphi 12 Athens
 
#26

Re: Wertebereich von -X bis +X erstellen ?

  Alt 29. Okt 2008, 19:09
Moin, moin,

so dann werfe ich auch mal meine Randomformel in den Thread !

Delphi-Quellcode:
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;
Grüße // Martin
Martin Schaefer
Phaeno
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#27

Re: Wertebereich von -X bis +X erstellen ?

  Alt 3. Nov 2008, 22:21
Bevor ich es vergesse, danke.
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:52 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz