AGB  ·  Datenschutz  ·  Impressum  







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

random

Ein Thema von glitterangel87 · begonnen am 1. Jul 2005 · letzter Beitrag vom 1. Jul 2005
Antwort Antwort
Seite 1 von 2  1 2      
glitterangel87

Registriert seit: 18. Dez 2004
Ort: Salzburg
12 Beiträge
 
#1

random

  Alt 1. Jul 2005, 09:12
hi! ich möchte eine Lottoziehung simulieren. deshalb habe ich randomize (bzw. random) verwendet. aber wie bekannt ist, gehen die zahlen bei lotto erst ab 1 los. jetzt hatte ich mir eigentlich gedacht, wenn ich eingebe

v:=random(49)+1;

dass keine 0 kommen sollte. denkste. wie mach ich das? kann mir BITTE wer helfen?

lg ~glitterangel
Adela
-------------------------------------------------------------------------------
~*adela*~
-------------------------------------------------------------------------------
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: random

  Alt 1. Jul 2005, 09:15
Das stimmt aber schon so
  Mit Zitat antworten Zitat
Kompon Ente
(Gast)

n/a Beiträge
 
#3
  Alt 1. Jul 2005, 09:16
Hi,

also ich hab mal ein Würfel programmiert und da hab ich's exakt so gemacht.

Bei mir funktioniert's!

Deshalb -> kA!
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#4

Re: random

  Alt 1. Jul 2005, 09:17
Hallo GlitterAngel87,

hast du auch einen Randomize()-Aufruf im OnCreate des Forms? Evtl. ist das das Problem

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von Treffnix
Treffnix

Registriert seit: 25. Jun 2003
Ort: AC
740 Beiträge
 
Delphi 7 Professional
 
#5

Re: random

  Alt 1. Jul 2005, 09:19
Auch ohne Randomize dürfte keine 0 kommen. Poste doch mal die ganze Funktion.
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: random

  Alt 1. Jul 2005, 09:20
Zitat von alcaeus:
hast du auch einen Randomize()-Aufruf im OnCreate des Forms? Evtl. ist das das Problem
Das bewirkt doch nur, dass bei jedem Programmstart nicht die gleichen "Zufallszahlen" erzeugt werden. Das obige Beispiel sollte ohne Randomize doch genauso funktionieren.
  Mit Zitat antworten Zitat
Benutzerbild von ste_ett
ste_ett

Registriert seit: 10. Sep 2004
Ort: Dülmen
464 Beiträge
 
Delphi 7 Professional
 
#7

Re: random

  Alt 1. Jul 2005, 09:51
Exakt.

Zitat:
In Delphi gibt Random eine Zufallszahl im Bereich 0 <= X < Range zurück. Wird der Parameter Range nicht angegeben, liefert Random einen Real-Wert im Bereich 0 <= X < 1.
"random(49)+1" liefert (0-48 ) + 1, also 1 - 49.
Stefan
"Geht nicht!" ist keine Fehlerbeschreibung und "Hab ich schon versucht!" keine Antwort!

Hey, it compiles! Ship it!
  Mit Zitat antworten Zitat
glitterangel87

Registriert seit: 18. Dez 2004
Ort: Salzburg
12 Beiträge
 
#8

Re: random

  Alt 1. Jul 2005, 10:54
das ist das ganze! und ich schwör euch: gestern sind mir sooo oft 0 gekommen, da hab ich mir gedacht, ich dreh gleich durch!

Delphi-Quellcode:
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
   for i:= 1 to 6 do
    begin
      randomize;
      a[i]:=random(49)+1;
    end;
   repeat
     c:=true;
     for i:= 1 to 5 do
      begin
        if a[i]>a[i+1] then
         begin
           h:=a[i];
           a[i]:=a[i+1];
           a[i+1]:=h;
           c:=false;
         end;
      end;
   until c;
   Label1.Caption:= IntToStr(a[1]);
   Label2.Caption:= IntToStr(a[2]);
   Label3.Caption:= IntToStr(a[3]);
   Label4.Caption:= IntToStr(a[4]);
   Label5.Caption:= IntToStr(a[5]);
   Label6.Caption:= IntToStr(a[6]);

end;
wo kann der fehler liegen?

[edit=alcaeus]Delphi-Tags eingefuegt. In Zukunft bitte selbst machen. Danke Mfg, alcaeus[/edit]
Adela
-------------------------------------------------------------------------------
~*adela*~
-------------------------------------------------------------------------------
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#9

Re: random

  Alt 1. Jul 2005, 11:10
Hallo Adela,

die Funktion Random() ist zwar ganz nützlich für das Ziehen der Lottozahlen, aber alleine schafft sie das dann doch nicht. Die Funktion Random() garantiert dir über einen ausgeklügelten mathematischen Ansatz eine ausreichend gute Gleichverteilung der Funktionswerte bei entsprechend großen Stichproben, aber sie garantiert dir keine Duplikatfreiheit bei den ersten 6 Werten.

Du wirst dir etwas überlegen müssen, damit bei der Ziehung der zweiten Zahl die erste nicht wieder Teil der Ziehungsmenge ist.

Grüße vom marabu


Ein Beispiel:

Delphi-Quellcode:
type
  TOddSet = set of byte;

var
  Ziehung: TOddset;

procedure Draw(count, total: byte; var oddSet: TOddSet);
begin
  oddSet := [];
  while SizeOf(oddSet) < count do
    oddSet := oddSet + [Succ(Random(total))];
end;
  Mit Zitat antworten Zitat
Benutzerbild von Treffnix
Treffnix

Registriert seit: 25. Jun 2003
Ort: AC
740 Beiträge
 
Delphi 7 Professional
 
#10

Re: random

  Alt 1. Jul 2005, 11:12
Also ich habs gerade mal getestet und ich hatte nicht einmal ne 0. Selbst wenn ich die Range auf 1 geändert habe. Zum Lottospielen solltest du aber noch überprüfen, ob eine Zahl bereits vorkam.

Wie hast du denn die Variablen deklariert?

Habs jetzt mal so angenommen:
Delphi-Quellcode:
var i, h: Integer;
    c: Boolean;
    a: array[1..6] of Integer;
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 16:03 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