AGB  ·  Datenschutz  ·  Impressum  







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

Random

Ein Thema von Lammbock0 · begonnen am 19. Jan 2003 · letzter Beitrag vom 23. Jan 2003
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#11
  Alt 20. Jan 2003, 01:59
In einem Array die schon gezogenen speichern und bei jeder neuen Ziehung vergleichen. Wurde die zahl schon mal gezogen, noch mal ziehen. So lange bis man eine zieht, die es noch nicht gab.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#12
  Alt 20. Jan 2003, 06:32
Hallo Privateer3000,

Luckies Vorschlag funktioniert zwar, ist aber nicht so ganz effektiv . Bei der letzten Zahl musst du solange neue Zufallszahlen generieren bis genau die Zahl rauskommt, die noch fehlt. Etwas besser ist es da (insbesondere bei noch größeren Bereichen) die gezogene Zufallszahl als Zähler in der Menge der noch nicht gefundenen Zahlen zu benutzen.
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#13
  Alt 20. Jan 2003, 09:03
Zitat von Privateer3000:
da möchte ich doch gleich mal einhaken...
und zwar wie kann man verhindern das (legen wir eine Range bis 100 fest)
jede Zahl nur 1mal gezeigt wird?!Und zwar so lange bis alle aufgebraucht sind.Wäre interessant für eine Auslosungsgeschichte.
Ähm...

wenn Du das so machst hast Du keine Zufahlszahlen (Du hast ja einfach alle Zahlen aus einer Gegebenen Menge "erzeugt").

Was Du hast ist eine zufällige Reihenfolge der Zahlen.

Aber das kann man sicher auch anders lösen?
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Benutzerbild von Privateer3000
Privateer3000

Registriert seit: 10. Jun 2002
Ort: Jena
1.128 Beiträge
 
Delphi 10.4 Sydney
 
#14
  Alt 20. Jan 2003, 11:17
[quote="Sharky"]
Zitat von Privateer3000:
da möchte ich doch gleich mal

wenn Du das so machst hast Du keine Zufahlszahlen
stimmt...ich kam halt nur beim lesen auf die Idee
da ich dies mal in kürze benötige.
Aber im gewissen Sinne ist es schon eine Zufallszahl.
Denn aus der gegebenen Menge will ich ja keine bestimmte,sondern eben eine zufällige.
Kann man eine aus dem array erzeugte Zahl löschen(oder markieren)
das sie beim nächsten Zugriff "nicht beachtet" wird?
Peter
+++Versuch es nicht mit Gewalt + Nimm einen größeren Hammer! +++
  Mit Zitat antworten Zitat
Benutzerbild von nailor
nailor

Registriert seit: 12. Dez 2002
Ort: Karlsruhe
1.989 Beiträge
 
#15
  Alt 20. Jan 2003, 13:00
Zufallszahl zwischen 0 und 100 ist aber Random(101)
Michael N.
http://nailor.devzero.de/code/sharpmath/testing/ --- Tests, Feedback, Anregungen, ... aller Art sehr willkommen!
::: don't try so hard - it'll happen for a reason :::
  Mit Zitat antworten Zitat
Sebastian Nintemann
(Gast)

n/a Beiträge
 
#16
  Alt 20. Jan 2003, 15:26
Hi, ich hab das mal so gemacht (alle dürfen nur einmal vorkommen):
1. Array von 1 bis 100 mit den Zahlen 1 bis 100 belegen
2. Die Zahlen mit random vertauschen, mindestens jede Zahl einmal mit einer anderen tauschen, je öfter desto "durchgemischter". Durch das tauschen verhinderst du, dass Zahlen doppelt vorkommen, da keine neuen Zahlen erzeugt werden, sondern nur die von 1 bis 100 ihre Position wechseln, es muss nicht mehr geprüft werden ob eine grad erzeugte Zahl eventuell schonmal da war.
3. Jetzt kannst du mit Array[1] bis Array[100] die zufällige Zahlenfolge abfragen.

Gruß, Sebastian
  Mit Zitat antworten Zitat
Benutzerbild von Privateer3000
Privateer3000

Registriert seit: 10. Jun 2002
Ort: Jena
1.128 Beiträge
 
Delphi 10.4 Sydney
 
#17
  Alt 20. Jan 2003, 15:48
hhmmm
wie meinst du das mit dem "vermischen"?
Das verstehe ich nicht ganz.
Aber das andere leuchtet schon ein
Peter
+++Versuch es nicht mit Gewalt + Nimm einen größeren Hammer! +++
  Mit Zitat antworten Zitat
Benutzerbild von nailor
nailor

Registriert seit: 12. Dez 2002
Ort: Karlsruhe
1.989 Beiträge
 
#18
  Alt 20. Jan 2003, 16:06
Du erzeugst dein Array erst mal mit den Zahlen 1-100 der Reihe nach.
Du erzeugst zwei zufällige Indices I1 und I2. Die Zahl in dem Array mit dem Index kopierst du in eine temporäre Variable, die Zahl in dem Array mit dem Index I2 kopierst du in den Array auf den Index I1 und dann die temporäre Variable in den Array kopieren an Stelle I2.
Das ganze solange du Lust hast wiederholen. Ist zwar nicht ganz so schön, aber leicht umzusetzen und funzt.
Michael N.
http://nailor.devzero.de/code/sharpmath/testing/ --- Tests, Feedback, Anregungen, ... aller Art sehr willkommen!
::: don't try so hard - it'll happen for a reason :::
  Mit Zitat antworten Zitat
Benutzerbild von BrunoT
BrunoT

Registriert seit: 23. Jan 2003
Ort: Sandbeiendorf
360 Beiträge
 
Delphi 8 Professional
 
#19

Array

  Alt 23. Jan 2003, 23:05
Kann man eine aus dem array erzeugte Zahl löschen(oder markieren)
das sie beim nächsten Zugriff "nicht beachtet" wird?

Na klar

Type
z=record
Zahl:integer;
Flag:boolean;
end;

Var
a:Array[1.100] of z;

For i:=1 to 100 do
Begin
a[i].Zahl:=random(100)+1; { Berücksichtigt nur Zahlen von 1-100}
a[i].Flag:=False;
end;

Nun lässt sich jede Zahl als berücksichtigt markieren.

mfg
Holger

EDV- Ende der Vernunft
Meine Calcedit-Kompo
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 00:14 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