Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi RandomRange Problem (https://www.delphipraxis.net/154587-randomrange-problem.html)

torro 16. Sep 2010 16:57

RandomRange Problem
 
Hi Leuts!

Also ich hab folgendes Probelm. Ich habe möchte RandomRange Zahlen aus dem Bereich 100-200 generieren. Zufällig und ohne Wiederhohlung. Mein Code funktioniert an und für sich. Sprich Zahlen werden generiert und mir auch ausgespuckt. Nur werden auch immer wieder mal Zahlen unter 100 generiert, zB 67. oder ne 0. und wiederhohlen tun sie sich leider auch öfters mal.
ich mal meinen code. Die zahlen werden in ein Array geschrieben. wobei sich das array mit verschiedenen "Zahlenabschnitten" füllen muss. Ausgegeben wird das ganze mit canvas.textout und weiter unten im code steht (was keine Probleme macht!). außerdem werden immer die !selben! Zufallszahlen erzeugt! Was ja wohl nicht sinn der Sache ist.
Delphi-Quellcode:
procedure TForm1.LOSClick(Sender: TObject);
var i, j, h : integer;
begin
i:=0;
  for j := 1 to 15 do begin
    Fragenliste[i] := random(RandomRange (101, 200));
    i:= i+1;
    end;
  for j := 16 to 25 do begin
      Fragenliste[i]:= random(RandomRange (201, 300));
      i:=i+1;
  end;
  for j := 26 to 40 do begin
      Fragenliste[i] := random (RandomRange (301, 400));
      i:=i+1;
end;
Danke im vorraus für eure Zeit!

SirThornberry 16. Sep 2010 17:07

AW: RandomRange Problem
 
Schau dir am besten mal die Hilfe zu Random an dann sollte dir auch klar werden warum du so kleine Zahlen bekommst.
Zitat:

function Random(const ARange: Integer): Integer;
[...]
0 <= X < 1
Aber das ganze macht auch irgendwie keinen Sinn. Wenn du bereits mit RandomRange zahlen aus dem gewünschten Bereich erzeugst, warum übergibst du dann dieses Ergebnis erst noch an Random?

Das Zahlen doppelt vorkommen liegt daran das du nicht überprüfst ob die erzeugte Zahl bereits in deinem Array ist.


Zitat:

Ich habe möchte RandomRange Zahlen aus dem Bereich 100-200 generieren.
Warum rufst du dann Random Range mit Zahlen größer 201 auf? Wenn du Zahlen zwischen 100 und 200 generieren willst sollte der Aufruf von RandomRange so aussehen:
Delphi-Quellcode:
Ergebnis := RandomRange(100,201);

shmia 16. Sep 2010 17:08

AW: RandomRange Problem
 
Delphi-Quellcode:
Fragenliste[i] := random(RandomRange (101, 200));
//................^^^^^^.........................
Das ist doch Doppelt-Gemoppelt.
Also lass mal das random weg.
Ein typischer Tomaten-Auf-Den-Augen-Effekt, den wir Programmierer immer wieder haben.

torro 16. Sep 2010 17:12

AW: RandomRange Problem
 
Hi, erstmal danke für die schnelle antwort!

das problem mit den zu kleinen zahlen hab ich verbessert, war ein doofer fehler meinerseits.
dass allerdings jedesmal wennich das programm neu starte beim ersten klick auf den button die selben zahlen erscheinen wie beim ersten klick eines vorherigen programmstarts ist mir schleierhaft. zumal wenn man ein zweites mal klickt zwar andere zahlen erzeugt werden. diese allerdings wieder gleich beim zweiten klick im verhorigen start...

silver-moon-2000 16. Sep 2010 17:23

AW: RandomRange Problem
 
Zitat:

Zitat von torro (Beitrag 1050141)
dass allerdings jedesmal wennich das programm neu starte beim ersten klick auf den button die selben zahlen erscheinen wie beim ersten klick eines vorherigen programmstarts ist mir schleierhaft. zumal wenn man ein zweites mal klickt zwar andere zahlen erzeugt werden. diese allerdings wieder gleich beim zweiten klick im verhorigen start...

hast Du beim programmstart auch (einmalig) Randomize; aufgerufen (am bestem im FormCreate oder sonstwo, wo man es nicht vergisst)

torro 16. Sep 2010 17:32

AW: RandomRange Problem
 
öhm nein, daran hab ich nich gedacht. danke. jetzt is alles so wie es sein soll.
die sache mit dem doppelten werd ich schon irgendwie deichseln.
danke


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:42 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