AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

RandomRange Problem

Ein Thema von torro · begonnen am 16. Sep 2010 · letzter Beitrag vom 16. Sep 2010
Antwort Antwort
torro

Registriert seit: 16. Sep 2010
37 Beiträge
 
#1

RandomRange Problem

  Alt 16. Sep 2010, 17:57
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!

Geändert von torro (16. Sep 2010 um 18:02 Uhr) Grund: wollt mich noch bedanken, und ein nachtrag
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

AW: RandomRange Problem

  Alt 16. Sep 2010, 18:07
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:
Ergebnis := RandomRange(100,201);
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's

Geändert von SirThornberry (16. Sep 2010 um 18:10 Uhr)
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#3

AW: RandomRange Problem

  Alt 16. Sep 2010, 18:08
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.
Andreas
  Mit Zitat antworten Zitat
torro

Registriert seit: 16. Sep 2010
37 Beiträge
 
#4

AW: RandomRange Problem

  Alt 16. Sep 2010, 18:12
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...
  Mit Zitat antworten Zitat
silver-moon-2000

Registriert seit: 18. Feb 2007
Ort: Schweinfurt
170 Beiträge
 
Delphi XE Professional
 
#5

AW: RandomRange Problem

  Alt 16. Sep 2010, 18:23
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)
Tobias
Bitte nicht hauen , ich weiß es nicht besser
  Mit Zitat antworten Zitat
torro

Registriert seit: 16. Sep 2010
37 Beiträge
 
#6

AW: RandomRange Problem

  Alt 16. Sep 2010, 18:32
ö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
  Mit Zitat antworten Zitat
Antwort Antwort


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 18:32 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