Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi random <> zufall (würfeln) (https://www.delphipraxis.net/30872-random-zufall-wuerfeln.html)

Fluffy 30. Sep 2004 14:44


random <> zufall (würfeln)
 
hi!

ich muss eine bestimmte anzahl würfel werfen und die augen zusammenzählen. danach nochmal eine andere anzahl würfel und nochmals zusammenzählen.
und zum schluss diese beiden zahlen zusammenrechnen - hier mein code bis jetzt:
Delphi-Quellcode:
procedure TForm1.FormActivate(Sender: TObject);
var
  i,z,v:Integer;
begin
  z:=0;
  v:=0;
  for i:=1 to max1 do begin
    z:=z+random(6)+1;
  end;
  for i:=1 to max2 do begin
    v:=v+random(6)+1;
  end;
  label1.Caption:=IntToStr(z+v);
end;
nur ist jetzt das problem, dass z und v genau dasselbe ergeben, wenn max1 und max2 identisch sind - soll heissen, random gibt mir keine zufällige zahl, auch nicht durch randomize, weil ja alles zur selben zeit passiert. es muss aber zufällig werden!
eigentlich will ich nicht unbedingt, dass ich zwei buttons klicken muss oder so was umständliches, aber wenn ihr nicht weiterwisst bleibt mir nichts anderes übrig :roll:

greetz
fluffy

Dax 30. Sep 2004 14:46

Re: random <> zufall (würfeln)
 
Herzlich willkommen in der DP! :party:

Nutze doch nochmal Randomize() zwischen den Schleifen, vielleicht hilft das.

Meflin 30. Sep 2004 14:47

Re: random <> zufall (würfeln)
 
öhm eigentlich sollte durch randomize doch zwei zufallszahlen rauskommen, es geschieht ja eh nicht genau zur gleichen zeit, das ist unmöglich!

Fluffy 30. Sep 2004 14:55

Re: random <> zufall (würfeln)
 
wie ich bereits sagte, randomize funktioniert nicht, das hab ich schon versucht... vl ist es zu schnell als dass randomize einen anderen wert liefern könnte, keine ahnung - es geht einfach nicht :mrgreen:

Dax 30. Sep 2004 14:56

Re: random <> zufall (würfeln)
 
Dann setzte RandSeed zwischen den Schleifen eben selbst.

static_cast 30. Sep 2004 14:58

Re: random <> zufall (würfeln)
 
Hi,

pack mal in dein Create oder so

Delphi-Quellcode:
..
Randomize;
..

Zitat:

procedure Randomize;

Beschreibung

Randomize initialisiert den integrierten Zufallszahlengenerator mit einem zufälligen Wert (der aus der Systemzeit abgeleitet wird). Der Zufallszahlengenerator sollte initialisiert werden, indem die Prozedur Randomize aufgerufen oder der Variablen RandSeed ein Wert zugewiesen wird.

Kombinieren Sie in einer Schleife nicht den Aufruf von Randomize mit Aufrufen der Funktion Random. Normalerweise wird Randomize vor den Aufrufen von Random nur einmal aufgerufen.
Grüße
Daniel

Treffnix 30. Sep 2004 15:01

Re: random <> zufall (würfeln)
 
wo genau haste denn randomize aufgerufen? Prinzipiell darf man Randomize nur einmal aufrufen und zwar, bevor man das erste mal random benutzt. Ausserdem solltest du dir dein random nochmal angucken. Wenn ich mich nicht irre, gibt dir random( 6 ) + 1 eine Zahl zwischen 1 und 7 zurück. Ich denke mal du willst aber 1-6...

Fluffy 30. Sep 2004 15:03

Re: random <> zufall (würfeln)
 
@static: s. vorheriger post

@dax: :wall: das einfachste sieht man immer erst am schluss... ja, so gehts! vielen dank!

xineohp 30. Sep 2004 15:03

Re: random <> zufall (würfeln)
 
moim,

:gruebel: also bei mir funz folgender Code perfekt ... ob mit oder ohne randomize.
bei identischem max1 und max2 sind v und z halt recht dicht beieinander, aber nur selten gleich.
Delphi-Quellcode:
var
  i,z,v:Integer;
begin
  z:=0;
  v:=0;
  randomize;
  for i:=1 to 100 do begin
    z:=z+random(6)+1;
  end;
  randomize;
  for i:=1 to 100 do begin
    v:=v+random(6)+1;
  end;
  label1.Caption:=IntToStr(z+v);
  label2.Caption:=IntToStr(z);
  label3.Caption:=IntToStr(v);
end;

Wheelie 30. Sep 2004 15:04

Re: random <> zufall (würfeln)
 
Dann machst du irgendwas falsch. Habe deine Prozedur mal ausprobiert und Randomize im OnFormCreate-Ereignis ergänzt -> funktioniert tadellos. Du hast Randomize wahrscheinlich mit in die Schleife genommen, was zu nichtzufälligen Ergebnissen führen dürfte.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:07 Uhr.
Seite 1 von 2  1 2      

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