AGB  ·  Datenschutz  ·  Impressum  







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

Problem mit Zufalls zahlen!

Ein Thema von Skyrunner2 · begonnen am 5. Mär 2005 · letzter Beitrag vom 5. Mär 2005
Antwort Antwort
Skyrunner2

Registriert seit: 11. Jan 2005
Ort: Bochum
50 Beiträge
 
Delphi 2006 Architect
 
#1

Problem mit Zufalls zahlen!

  Alt 5. Mär 2005, 13:59
also in einer funktion wird ein zufälliges element aus einer TQueue ausgelesen.

doch irgentwir ist die zufalls zahl immer die selebe:

(ICH RATE ZUM ZUSAMMENFALTEN!)

Code:
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:3
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:3
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:2
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:3
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:3
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:3
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:3
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:3
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:3
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:3
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:3
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:3
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:3
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:3
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:3
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:3
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:3
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:3
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:3
Tmaze.RandomTQueueItem: Zufälliges element:1 aus:4
hier mal die funktion mit der ich die elemente zufällig auswähle:
Delphi-Quellcode:
function Tmaze.RandomTQueueItem(Q:TQueue):Pointer; //Zufälliges Element aus der liste suchen
var i:integer;
begin
LogForm.APPEND('Tmaze.RandomTQueueItem: Hello',3);
   randomize;
   for i:=0 to random(Q.Count) do
        Q.Push(Q.Pop);
   LogForm.APPEND('Tmaze.RandomTQueueItem: Zufälliges element:'+inttostr(i)+' aus:'+inttostr(Q.Count),0);
   RandomTQueueItem:=Q.Pop;
LogForm.APPEND('Tmaze.RandomTQueueItem: Goodbye',3);
end;
es ist nicht IMMER 1. die funktion wird in einer for schleife mit ~ 10 anderen zeilen code aufgerufen, also sehr sehr häufig.
is sind immer "blöcke" an selben zaheln...

all dies passiert in rahmen einer Labyrinth erstellungs prozedure, und zu schluss sieht das labyrinth dann nicht soo labyrinthig aus(siehe attachment)
Miniaturansicht angehängter Grafiken
image1_196.jpg  
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Problem mit Zufalls zahlen!

  Alt 5. Mär 2005, 14:01
Hast du auch irgendwo mal Delphi-Referenz durchsuchenRandomize aufgerufen? Edit hast du. Aber du darfst es nur einmal aufrufen, am besten in OnCreate Ereignis der Form.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von sniper_w
sniper_w

Registriert seit: 12. Dez 2004
Ort: Wien, Österriech
893 Beiträge
 
Delphi 6 Enterprise
 
#3

Re: Problem mit Zufalls zahlen!

  Alt 5. Mär 2005, 14:03
Delphi-Quellcode:
for i:=0 to random(Q.Count) do
        Q.Push(Q.Pop);
   LogForm.APPEND('Tmaze.RandomTQueueItem: Zufälliges element:'+inttostr(i)+' aus:'+inttostr(Q.Count),0);
Variable i ist nach der Schleife undeffiniert. (Delphi ist nicht halt C )

[EDIT]
Und warscheinlich wegen Compiler - Optimierung läuft i von Random(Q.Count) DOWNTO 0 .
Katura Haris
Es (ein gutes Wort) ist wie ein guter Baum, dessen Wurzel fest ist und dessen Zweige in den Himmel reichen.
  Mit Zitat antworten Zitat
Benutzerbild von Binärbaum
Binärbaum

Registriert seit: 19. Jan 2005
Ort: Elstra
764 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Problem mit Zufalls zahlen!

  Alt 5. Mär 2005, 14:08
Zitat von sniper_w:
Delphi-Quellcode:
for i:=0 to random(Q.Count) do
        Q.Push(Q.Pop);
   LogForm.APPEND('Tmaze.RandomTQueueItem: Zufälliges element:'+inttostr(i)+' aus:'+inttostr(Q.Count),0);
Variable i ist nach der Schleife undeffiniert. (Delphi ist nicht halt C )
Also i ist nach der Schleife nicht undefiniert, sondern hat (hier im Beispiel) den Wert random(Q.Count)+1. Eine Schleifenvariable ist nach Ende der Schleife um eins größer als die Obergrenze der Laufvariable (bzw. bei DOWNTO um eins kleiner).

MfG
Binärbaum
There are exactly 10 kinds of people: those who understand binary, and those who don't.
---
"Software reift beim Kunden. Bei Hardware ist es anders: Hardware fault beim Kunden." - Rainer G. Spallek
  Mit Zitat antworten Zitat
Skyrunner2

Registriert seit: 11. Jan 2005
Ort: Bochum
50 Beiträge
 
Delphi 2006 Architect
 
#5

Re: Problem mit Zufalls zahlen!

  Alt 5. Mär 2005, 14:11
also ich hab getz mal randomize; aus der funktion rausgenomen und rufe es nur ein mal auf (danke Luckie) und das get besser...

(siehe visueller bewiess)


die optimierung hab ich auch mal durchführt.. dank!
Miniaturansicht angehängter Grafiken
image1_121.jpg  
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Problem mit Zufalls zahlen!

  Alt 5. Mär 2005, 14:19
Zitat von Binärbaum:
Zitat von sniper_w:
Delphi-Quellcode:
for i:=0 to random(Q.Count) do
        Q.Push(Q.Pop);
   LogForm.APPEND('Tmaze.RandomTQueueItem: Zufälliges element:'+inttostr(i)+' aus:'+inttostr(Q.Count),0);
Variable i ist nach der Schleife undeffiniert. (Delphi ist nicht halt C )
Also i ist nach der Schleife nicht undefiniert, sondern hat (hier im Beispiel) den Wert random(Q.Count)+1. Eine Schleifenvariable ist nach Ende der Schleife um eins größer als die Obergrenze der Laufvariable (bzw. bei DOWNTO um eins kleiner).
Das ist aber reiner Zufall. Oder warum sagt mir mein Compiler bei diesem Code:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  i : Integer;
begin
  for i := 0 to 9 do
  begin
    Listbox1.Items.Add(IntToStr(i));
  end;
  ShowMessage(IntToStr(i));
end;
Zitat:
[Warning] Unit1.pas(35): FOR-Loop variable 'i' may be undefined after loop
Warnung gibt der Compiler nicht nur zur Unterhaltung des Programmierers aus.
Michael
Ein Teil meines Codes würde euch verunsichern.
  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 17:02 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