![]() |
Re: Zufallsgleitkommazahlen mit zufälligen Nachkommastellen
Wenn man die Random() Funktion ohne Parameter aufruft, bekommt man Zufallszahlen zwischen 0.0 und 1.0.
Random() ist überladen - siehe OH. Man muss diesen Wertebereich nur noch verschieben und skalieren. |
Re: Zufallsgleitkommazahlen mit zufälligen Nachkommastellen
Hallo,
@sx2008: Das die Random() Function überladen ist, ist mir bekannt, allerdings wenn man einen Werte-Bereich angibt werden nur Interger-Zahlen zurückgegeben. @Medium: Danke erst mal für ausführliche Informationen. Die erste Funktion müsste nur geändert werden um die Nachkomma-Stellen als Integer zu bekommen. Geändert:
Delphi-Quellcode:
Nach einem kurzen Test funktioniert sie wunschgemäß.
function dZufallsZahlen(Von, Bis: Integer): Double;
var KommaStellen: Integer; begin KommaStellen := trunc(Power(10, random(8))*10); Result := iZufallsZahlen(Von*KommaStellen, bis*KommaStellen)/KommaStellen; end; Es sollen Zahlen zwischen -1000 und 100000 generiert werden, da sollte der Werte-Bereich noch funktionieren. Der String der erstellt wird von der Zufallszahl soll unterschiedliche Länge haben und nicht mit Nullen aufgefüllt werden. Zitat:
Bis bald Chemiker |
Re: Zufallsgleitkommazahlen mit zufälligen Nachkommastellen
Zitat:
Delphi-Quellcode:
function dZufallsZahl(Von, Bis: Double): Double;
begin Result := (Bis-Von)*Random + Von; end; |
Re: Zufallsgleitkommazahlen mit zufälligen Nachkommastellen
Hallo sx2008,
die Zufallszahlen waren nicht das Problem sondern, die variablen Kommastellen. Prüfe mal Deine Funktion mit den Werten: von: 0.00001 bis: 0.00002 dann wirst Du sehen das der Bereich nicht mehr eingehalten wird. Medium hat die Erklärung dafür gegeben. Bis bald Chemiker |
Re: Zufallsgleitkommazahlen mit zufälligen Nachkommastellen
Zitat:
Zwischen 0 und 1 gibt es genau 8 Werte, die genau eine Nachkommastelle haben. Es gibt 90 Werte, die 2 NKs haben, es gibt 900 Werte mit 3 NKs,... Ein echte Zufallszahl wird mit sehr hoher Wahrscheinlichkeit sehr viele Nachkommastellen haben. Zwischen zwei Zahlen, egal wie eng sie beieinander liegen, sind unendlich viele Zahlen dazwischen. Man darf Zufallszahlen auf eine bestimmte Anzahl Nachkommastellen runden und es bleiben immer noch gleichverteilte Zufallszahlen. Wenn man aber aber wie oben versucht die NKs so zu beeinflussen, dass sie zwischen 0 und 8 liegen, dann hat das mathematisch nicht mehr viel mit Zufallszahlen zu tun. Insbesondere ist die Gleichverteilung gestört. |
Re: Zufallsgleitkommazahlen mit zufälligen Nachkommastellen
Hallo sx2008,
im Grunde genommen werden die Zufallszahlen ab einer zufällig gewählten Stelle abgeschnitten, die Zufallszahlen werden ja bei der Entstehung nicht beeinflusst. Die Zahlen sollen zwischen -1000 und 100000 liegen. Die gleichmäßige Wahrscheinlichkeit ist nicht so wichtig, wobei auch bei den Nachkommastellen eine zufällige Verteilung besteht. Ich bin sowieso der Meinung, dass man mit einem Rechner keine echten Zufallszahlen generieren kann. Bis bald Chemiker |
Re: Zufallsgleitkommazahlen mit zufälligen Nachkommastellen
Zitat:
|
Re: Zufallsgleitkommazahlen mit zufälligen Nachkommastellen
Hallo alzaimar,
die Zufallszahlen werden für eine Simulation gebraucht. Random() ist nicht für Kryptographie geeignet, laut der Delphi-Hilfe. Zudem würden meine bescheiden Mathematischen Kenntnisse für Kryptographie nicht ausreichen. Bis bald Chemiker |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:47 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