AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Delphi Nur random Zahlen ausgeben die durch 4 teilbar sind

Nur random Zahlen ausgeben die durch 4 teilbar sind

Ein Thema von Enddrew · begonnen am 8. Okt 2017 · letzter Beitrag vom 9. Okt 2017
Antwort Antwort
Seite 1 von 2  1 2   
Enddrew

Registriert seit: 8. Okt 2017
7 Beiträge
 
#1

Nur random Zahlen ausgeben die durch 4 teilbar sind

  Alt 8. Okt 2017, 16:28
Hallo Leute,

Mein Problem ist wie folgt. Ich will das Nagel-Schreckenberg-Modell (ein Zellulärautomat zur Darstellung von Staus) programmieren. Dazu brauche ich Vierecke die in 4 Pixel großen Zellen liegen (die Vierecke male ich mithilfe von "panel1.Canvas.Rectangle(x1,y1,x2,y2)") . Mein Problem ist nun, dass ich diesen Vierecken random Koordinaten zuweisen will. Diese Koordinaten dürfen allerdings nur alle vier Pixel sein, da sonst ein Viereck zwischen 2 Zellen liegen würde. Somit brauche ich random Zahlen die nur durch vier teilbar sind, aber ich weiß nicht wie ich das anstellen soll.

Ein weiteres Problem wäre noch das ich nicht 2 Vierecke auf der selben Position haben möchte. Falls mir jemand dabei auch noch eine Idee geben könnte wäre ich sehr dankbar.

Ich hoffe ich konnte euch mein Problem halbwegs gut erklären .
Danke schon mal im vorraus für die Antworten.
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.004 Beiträge
 
Delphi 2009 Professional
 
#2

AW: Nur random Zahlen ausgeben die durch 4 teilbar sind

  Alt 8. Okt 2017, 16:33
Eine "Random"-Zahl erzeugen, dann mit vier multiplizieren?

... den mathematischen Beweis dafür, das man so nur durch vier teilbare Zahlen erhält, muss ich allerdings schuldig bleiben.
Nennen wir es - frei nach Horst Evers - "gefühltes Wissen"
Michael Justin
  Mit Zitat antworten Zitat
Enddrew

Registriert seit: 8. Okt 2017
7 Beiträge
 
#3

AW: Nur random Zahlen ausgeben die durch 4 teilbar sind

  Alt 8. Okt 2017, 16:36
Das klingt schon mal nach einer guten Idee Dankeschön Ich werde es mal ausprobieren.
  Mit Zitat antworten Zitat
gammatester

Registriert seit: 6. Dez 2005
999 Beiträge
 
#4

AW: Nur random Zahlen ausgeben die durch 4 teilbar sind

  Alt 8. Okt 2017, 16:37
Zu 1. Schreib eine Funktion myrand() die ungefähr so aussueht,
wobei (..) den Bereich definieren, multiplizieren mit 4 verletzt ev. den Bereich, also lieber gleich an der Basis ansetzen.
Delphi-Quellcode:
funtion myrand(..): integer;
begin
  repeat
    result := random(...);
  until result mod 4 = 0;
end.
zu 2. Was bedeutet "2 Vierecke auf der selben Position"?

Geändert von gammatester ( 8. Okt 2017 um 16:39 Uhr)
  Mit Zitat antworten Zitat
Enddrew

Registriert seit: 8. Okt 2017
7 Beiträge
 
#5

AW: Nur random Zahlen ausgeben die durch 4 teilbar sind

  Alt 8. Okt 2017, 16:44
zu 2.) In diesem Modell stellen die Vierecke die Autos dar, die auch verschiedene Geschwindigkeiten haben. Daher wäre es unpraktisch, wenn ich 2 Autos auf der selben Position habe, da es ja auch in echt nicht möglich wäre. Dafür bräuchte ich eine Abfrage, dass diese random erstellten Autos nicht auf der selben Position auftauchen.
  Mit Zitat antworten Zitat
gammatester

Registriert seit: 6. Dez 2005
999 Beiträge
 
#6

AW: Nur random Zahlen ausgeben die durch 4 teilbar sind

  Alt 8. Okt 2017, 16:57
Immer noch nicht klar. Willst Du, daß sich die Vierecke nicht überschneiden (dafür gibt's irgendwo sicher eine Funktion intersect, zB TRect.Intersect) oder daß die Eckpunkte nicht identisch sind?
  Mit Zitat antworten Zitat
Enddrew

Registriert seit: 8. Okt 2017
7 Beiträge
 
#7

AW: Nur random Zahlen ausgeben die durch 4 teilbar sind

  Alt 8. Okt 2017, 17:04
Ich will das die Eckpunkte nicht identisch sind.
Miniaturansicht angehängter Grafiken
diagramm-nsm.jpg  
  Mit Zitat antworten Zitat
gammatester

Registriert seit: 6. Dez 2005
999 Beiträge
 
#8

AW: Nur random Zahlen ausgeben die durch 4 teilbar sind

  Alt 8. Okt 2017, 17:08
Das sieht ja ein-dimensional aus mit jedem 'Auto' ein 4x4 Quadrat, dann braucht Du doch zu testen, ob die linken unteren Ecken schon belegt sind.
  Mit Zitat antworten Zitat
mensch72

Registriert seit: 6. Feb 2008
838 Beiträge
 
#9

AW: Nur random Zahlen ausgeben die durch 4 teilbar sind

  Alt 8. Okt 2017, 17:10
=> vergesst doch bitte bei diesem Porblem den Versuch der "grafischen" Analyse ob etwas doppelt ist...
Man trenne hier erstmal "Visualisierung von Logik"!... wieviel Pixel "ein Auto" einnimmt spielt doch keine Rolle, es geht um "Auto" oder "nicht Auto" an einer möglichen eineindeutigen "Position".

=> es geht also um zufällig verteilte Autos auf einer endlichen Anzahl möglicher Positionen... richtig ?

-> warum dann nicht zunächst eine Liste mit einem Index von 0...max Positions-1, wo pro Index zunächstmal eine Koordinate hinterlegt ist... so kann man Straßen, Plätze oder was weiß ich mit real möglichen Autopositionen definieren geometrisch frei positionieren, letztendlich interessiert nur die Gesamtszahl der möglichen Positionen

-> jetzt erzeuge eine 2. Liste nur mit IndexEinträgen von 0...max Positions-1 ohne weitere Daten und eine 3. leere Liste für Indexwerte auch gang ohne weitere Daten
-> nun Rufe eine RandomFunktion mit der aktuellen Anzahl der 2.Liste als Wertebereich auf und entferne jeweils das "Random-Element" aus dieser 2.Liste... und füg der 3. Liste den Indexeintrag hinzu
-> beim nächsten Randomaufruf wieder das gleiche... so ist 100% garantiert das du zufällige und sogleich eineindeutige IndexPositionen bekommst

=> zum Schluss nimm alle Indexwerte aus der 3. Liste und "male" per Liste 1 an den dazu passenden Positionen deine 4x4 Autos oder was auch immer
  Mit Zitat antworten Zitat
Enddrew

Registriert seit: 8. Okt 2017
7 Beiträge
 
#10

AW: Nur random Zahlen ausgeben die durch 4 teilbar sind

  Alt 8. Okt 2017, 17:14
Okay, vielen Dank. Ich werde es versuchen das so zu programmieren.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 20:45 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