Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   Random funktion mit variabel? (https://www.delphipraxis.net/67330-random-funktion-mit-variabel.html)

Hofnarr 13. Apr 2006 07:50


Random funktion mit variabel?
 
Hallo erstmal

leute ich habe ein kleines Problem:

Ich spiele seit einer gewissen zeit mit der Randomize sach rum. nun bin ich an ein problem gestossen.

erstmal den quelltext:

Delphi-Quellcode:
procedure TForm1.Alles_WuerfelnClick(Sender: TObject);
var a,b,c,d,e,f,g,h,i,j:real  ;

 randomize; //Zufallszahl für alle gleichzeitig
 a:=random (6)+1;
 b:=random (6)+1;
 c:=random (6)+1;
 d:=random (6)+1;
 e:=random (6)+1;
 f:=random (6)+1;
 g:=random (6)+1;
 h:=random (6)+1;
 i:=random (6)+1;
 j:=random (6)+1;
nun ich möchte in einem Feld eine zahl eingeben, welche dann die Grösse des "würfels" definiert.
ich habs mal mit variabel einfügen probiert(variabel anstadt die zahl 6), futzte aber nicht... kann jemand helfen? :coder2:

danke schonmal im vorraus


EDIT: Sorry admins, kann man den thread ins richtige thema verschieben?

Angel4585 13. Apr 2006 07:55

Re: Random funktion mit variabel?
 
wie ich das sehe benutzt du Variablen vom Typ "real", wahrscheinlich hast die auch bei Random versucht zu verwenden oder?

Probier das mit einer Integer-Variablen.

chaosben 13. Apr 2006 07:58

Re: Random funktion mit variabel?
 
Hi Hofnar!

Wenn ich deinen Code erweitere kommt etwa sowas raus:

Delphi-Quellcode:
procedure TForm1.Alles_WuerfelnClick(Sender: TObject);
var a,b,c,d,e,f,g,h,i,j:real  ;
SizeWuerfel : Byte;
begin
SizeWuerfel:=25;
randomize; //Zufallszahl für alle gleichzeitig
a:=random (SizeWuerfel)+1;
b:=random (SizeWuerfel)+1;
c:=random (SizeWuerfel)+1;
d:=random (SizeWuerfel)+1;
e:=random (SizeWuerfel)+1;
f:=random (SizeWuerfel)+1;
g:=random (SizeWuerfel)+1;
h:=random (SizeWuerfel)+1;
i:=random (SizeWuerfel)+1;
j:=random (SizeWuerfel)+1;
end;
Dieses Vorgehen ist aber ... naja sagen wir ... unschön.
Ich will dir hier nicht gleich kompletten Code vor die Tastatur werfen. Deswegen nur ein Hinweis: Vielleicht (sicher) macht es sich gut, eine Klasse TWuerfel zu erstellen. Wenn du dazu weitere Tips brauchst, sag "Bescheid" :)

Muetze1 13. Apr 2006 08:07

Re: Random funktion mit variabel?
 
Randomize sollte nur einmalig im Programmablauf aufgerufen werden und nicht ständig bei jedem Click. Daher bewege Randomize in das OnCreate oder OnShow Ereignis deines Formulars.

PS: irgendwie völligst die falsche Abteilung? Was hat das mit der Delphi IDE zu tun?

freak4fun 13. Apr 2006 08:30

Re: Random funktion mit variabel?
 
Es reicht doch wenn die Variablen auch vom Typ Byte sind. :)

Delphi-Quellcode:
var
  a, b, c, d, e, f, g, h, i, j: Byte;
MfG
freak

Kroko1999 13. Apr 2006 08:44

Re: Random funktion mit variabel?
 
ich hätte es so gemacht:
Delphi-Quellcode:
procedure TForm1.Alles_WuerfelnClick(Sender: TObject);
const
  coSize = 6;
var
  A: array[0..9] of Byte;
  I: Byte;
begin
  for I := Low(A) to High(A) do A[I] := Random(coSize)+1;
end;

glkgereon 13. Apr 2006 08:51

Re: Random funktion mit variabel?
 
Musst du denn die Werte alle speichern?

oder reicht es nicht wenn du am ende einfach die summe hast?

Delphi-Quellcode:
function Wuerfeln(Wuerfel, Anzahl: Integer):Integer;
var i: Integer;
begin
  Result:=0;
  for i:=1 to Anzahl do
    Result:=Result+Random(Wuerfel)+1;
end;
Und zum Schluss:
Real sollte nicht mehr verwendet werden, nimm lieber (wenn schon Fließkomma) Single, Double oder Extended. Warum? afaik weil Real reichlich subobtimal in der Performance ist weil es 48 Bit ist (???). Richtig?

Hofnarr 13. Apr 2006 08:52

Re: Random funktion mit variabel?
 
hmm... ich habe mal deinen Hinweis umzusetzen versucht... und das ist dabei rausgekommen:

Delphi-Quellcode:
Procedure TForm1.Alles_WuerfelnClick(Sender: TObject);
var a,b,c,d,e,f,g,h,i,j:real  ;
va:byte;

va:=strtoint(sz.Text);
 randomize; //Zufallszahl für alle gleichzeitig
 a:=random (va)+1;
 b:=random (va)+1;
 c:=random (va)+1;
 d:=random (va)+1;
 e:=random (va)+1;
 f:=random (va)+1;
 g:=random (va)+1;
 h:=random (va)+1;
 i:=random (va)+1;
 j:=random (va)+1;
aber funzen tuts net richtig so...

@chaosben gib nir nochma ein tipp bittöööö ^^

@muetze1 1.doch sollte bei jedem klick eine random zahl ausgeben
2.war mir klar hab ich aber erst nach dem schreiben bemerkt... ich hab die admins ja noch gebeten den thread zu verschieben

@glkgereon mir war leider bis heute nur Int und Real bekannt... was ist den der Unterschied? aussser die bit?

glkgereon 13. Apr 2006 08:54

Re: Random funktion mit variabel?
 
Zitat:

Zitat von Hofnarr
@muetze1 1.doch sollte bei jedem klick eine random zahl ausgeben

trotzdem muss und soll Randomize genau einmal aufgerufen werden.
Randomize initialisiert den Globalen zufallsgenerator, und wenn man ihn nochmal initialisiert wird er nicht wirklich zufälliger.
einmal im OnCreate und gut ist.

Hawkeye219 13. Apr 2006 08:56

Re: Random funktion mit variabel?
 
@glkgereon

Zitat:

Zitat von Online-Hilfe
Der generische Typ Real entspricht in seiner aktuellen Implementierung dem Typ Double (und damit dem Typ System.Double in .NET).

Der Typ Real48 (6 Byte) hatte in früheren Object Pascal-Versionen den Namen Real. Wenn Sie Quelltext neu compilieren, der den alten Typ Real (6 Byte) in Delphi enthält, ändern Sie diesen Typ in Real48. Die Compiler-Direktive {$REALCOMPATIBILITY ON} wandelt den Typ Real wieder in den alten 6-Byte-Typ um.

Gruß Hawkeye


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