Random zwischen zwei Zahlen
Hiho,
ich hab ne Frage, die wahrscheinlich sau einfach ist aber ich kommt nicht drauf :oops: Wie kann ich ne Zufallszahl zwischen z.b 50 und 100 erzeugen. Man könnte z.b das ja so schreiben:
Delphi-Quellcode:
Um ne zufallszahl zwischen 50 und 100 bekommt
var
a: Integer; begin randomize; a := random(50) a := a + 50; end; Aber es gibt doch da bestimmt ne elegantere Lösung! |
Re: Random zwischen zwei Zahlen
Das ist eigentlich die elegante Lösung
|
Re: Random zwischen zwei Zahlen
Mir fällt keine ein
außer vielleicht
Delphi-Quellcode:
a := Random(50)+ 50; // für zw. 50..99
a := Random(51)+ 50; // für zw. 50..100 |
Re: Random zwischen zwei Zahlen
hmm, gut dann kann man nix anderes machen! THX
|
Re: Random zwischen zwei Zahlen
Rein mathematisch gibt es wohl nichts "einfacheres" als eine lineare Abbildung (hier: Addition), um alle Elemente eines Intervalls eineindeutig auf ein Bildinterval zu projezieren.
Falls Du aber diesen Fall häufiger hast, könntest Du Dir eine Hilfsfunktion schreiben in der Art
Delphi-Quellcode:
oder
function MeinIntervall(const UntereGrenze, ObereGrenze: Integer): Integer;
Delphi-Quellcode:
function MeinFloatervall(const UntereGrenze, ObereGrenze: Double): Double;
|
Re: Random zwischen zwei Zahlen
Hallo. In der Unit Maths gibt es eine Funktion RandomRange(Anfangswert,Endwert)
Die berechnet einen Wert zwischen Anfangswert und Endwert (irgendwo logisch :wink:) Vielleicht hilft das weiter. Man liest sich, Stanlay :hi: |
Re: Random zwischen zwei Zahlen
Hallo Stanley,
wenn ich das richtig lese, verwendet Spider D5. In der Math-Unit von D5 (Enterprise) konnte ich die Funktion nicht finden, über D6 kann ich keine Aussage treffen. In D7 (Architekt) ist sie aber vorhanden. |
Re: Random zwischen zwei Zahlen
Unit Math! Wo gibt's die????
:wall: :wall: :wall: Hat gestern die Unit Math gelöscht :wall: :wall: :wall: |
Re: Random zwischen zwei Zahlen
die wird von Delphi mitgeliefert,
wobei bei dir wohl die funktion noch nicht verfügbar ist. Da dürfte allerdings auch nichts anderes drinnen stehen wie oben gepostet wurde, von daher halte ich diesefunction für sinnlos.... |
Re: Random zwischen zwei Zahlen
Doch irengwo hier geistert eine Unit "Math" rum!
Und die Such ich! |
Re: Random zwischen zwei Zahlen
die hast du schon !
(einfach math in die uses klausel hinzufügen) aber die hat noch ncht so viele funktionen wie bei D6 oder D7. |
Re: Random zwischen zwei Zahlen
Hi Choose! Danke für die Korrektur. Mir war nicht bekannt, dass es da diese Funktion noch gibt, weil ich selber Delphi 7 verwende.
Man liest sich, Stanlay :hi: |
Re: Random zwischen zwei Zahlen
gibt aber noch ne lösung, die man normal mit random machen kann!
Delphi-Quellcode:
heißt soviel wie ziehe eine zahl zwischen 0 und 50, und addiere 50 dazu! somit wäre die frage ebenfalls beantwortet ;)
zz:=random(51)+50;
ciao |
Re: Random zwischen zwei Zahlen
Zitat:
|
Re: Random zwischen zwei Zahlen
lol, verdammt hab ich überlesen :duck:
passiert halt |
Re: Random zwischen zwei Zahlen
Brauchst dich doch nicht zu verstecken. ;)
Ich hab vorher auch erst Mist gepostet, aber es dann noch verbessert. :D |
Re: Random zwischen zwei Zahlen
Hallo Choose,
Zitat:
Delphi-Quellcode:
ist das vielleicht die Gesuchte?
{ RandG produces random numbers with Gaussian distribution about the mean.
Useful for simulating data with sampling errors. } function RandG(Mean, StdDev: Extended): Extended; |
Re: Random zwischen zwei Zahlen
ich wusste nichtmal das delphi ne eigene funktion hat....ich hatte sie mir damals so geschrieben:
Delphi-Quellcode:
function Rand(RandFrom, RandTo: integer): integer;
begin if RandTo > RandFrom then begin Randomize; Repeat Result := Random(RandTo); until Result > RandFrom-1; end else Result := 0; end; |
Re: Random zwischen zwei Zahlen
:gruebel: da würdest du dir aber auch mit
Delphi-Quellcode:
einige sinnlose Schleifendurchläufe ( und auch Zeilen ) ersparen.
Result := Random( RandTo ) + RandFrom - 1
|
Re: Random zwischen zwei Zahlen
Zitat:
Delphi-Quellcode:
Dein's gibt einen Zufallswert in einem anderen Bereich zurück:
If RandTo > RandFrom Then
Result := RandFrom + Random(RandTo - RandFrom + 1) Else Result := 0;
Delphi-Quellcode:
so sollte es doch ausseh'n:
RandFrom - 1 <= Result < RandTo + RandFrom - 1
Result = (RandFrom - 1) .. (RandTo + RandFrom - 2)
Delphi-Quellcode:
RandFrom <= Result <= RandTo
Result = RandFrom .. RandTo |
Re: Random zwischen zwei Zahlen
Zitat:
|
Re: Random zwischen zwei Zahlen
Hallo!
@Silent: zum n+78631. Male: Das Randomize gehört nicht in die Zufalls-Ermittlungsprozedur, sondern wird nur einmal, z.B. im FormCreate, aufgerufen. Sonst gibt das merkwürdige Effekte! Hintergrund: durch Randomize wird der Pseudo-Zufallsgenerator mit der Uhrzeit initialisiert. Bei gleicher Uhrzeit und gleichem Intervall liefert Random auch den gleichen "Zufalls"-Wert! Deshalb hat man bei
Delphi-Quellcode:
zu fast 100% alle Array-Elemente auf demselben Wert oder erhält in den ersten Elementen einen Wert und danach im Rest den nächsten, weil der Zeitwechsel dazwischen lag (ich weiß jetzt nicht, wie genau Delphi die Uhrzeit benutzt).
var
feld:Array [ 1 .. 10 ] of Integer; lauf:Integer ... for lauf := 1 to 10 do begin Randomize; feld[lauf]:=Random(50); end; Nebenbei ist es natürlich Quatsch, solange zu würfeln, bis das Ergebnis paßt. Da haben wir bei der berühmten "Ziehung der Lottozahlen" ja schon ausreichend Erfahrung mit doppelten Zahlen und ihrer Vermeidung. Gruß Dietmar Brüggendiek |
Re: Random zwischen zwei Zahlen
ich führ das randomize ja auch nicht 10 mal in einer prozedur aus wie in deinem beispiel, sondern ledliglich 1mal davor... und "Komische" ergebnisse hab ich keine...
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:58 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