HaNNoveraNer Geschrieben 10. März 2020 Geschrieben 10. März 2020 function shuffle(tbl) for i = #tbl, 2, -1 do local j = math.random(i) tbl[i], tbl[j] = tbl[j], tbl[i] end return tbl end for i = 1,26 do $("Drehscheibe").variables["tt_tbl"][i]=i end shuffle($("Drehscheibe").variables["tt_tbl"]) Da ich das gerade gebraucht habe: Ziel: Zufällig in ein Gleis einer 26 Gleis Drehscheibe einfahren. Ergebnis: Eine Tabelle, die man von vorne bis hinten durchgehen kann, bis man ein freies Gleis findet. Im Codebeispiel wird nur die Tabelle mit Zufallszahlen erzeugt, wobei jede Zahl nur einmal vorkommen darf. Gruß Thomas
metallix Geschrieben 10. März 2020 Geschrieben 10. März 2020 Hi Thomas Koenntest du das mal als demo einstellen? Cheers Tom
Henry Geschrieben 10. März 2020 Geschrieben 10. März 2020 Kannitverstahn --- Keine Ahnung was das Thema bewirken soll. ich halte mich zwar nicht für ganz blöd- aber ich passe hier bei dieser Darstellungsweise... so aus der Luft gegriffen wirkt das gescriptete Zeugs so, daß sich der selbstverliebte Verfasser einen "Ich weiss aber mehr als Ihr Doofis" - Raum zur Selbstdarstellung reservieren möchte ... --- sorry --- so geht es nicht !!!! Hier lesen viele User mit, die sich ob der Lua-Kopflastigkeit des Forums nicht angesprochen aber überfordert fühlen. Schreib das bitte mal verständlich, im Bild, Wort und Beispiel. Wir möchten alle von Deinen Gedanken profitieren. meint momental grummelnd Henry
metallix Geschrieben 11. März 2020 Geschrieben 11. März 2020 (bearbeitet) vor 27 Minuten schrieb Henry: Kannitverstahn Hi Henry Isnitsoschlimm......deswegen hatte ich ja schon um die demo gebeten. Da kann man es sich dann anschauen und die funktionsweise pruefen, ergruenden. Ich denke das hilft mehr als wenn jemand, am ende in fachlatain oda laienchinesisch, versucht das zu erklaeren. Cheers Tom Bearbeitet 11. März 2020 von metallix
HaNNoveraNer Geschrieben 11. März 2020 Autor Geschrieben 11. März 2020 Hallo Henry Ich bin sehr verwundert, daß Du hier überhaupt in diesen Thread gekommen bist. Daher hatte ich extra in der Überschrift gekennzeichnet, daß es hier um Lua geht. So braucht doch niemand hier reinschauen, den es nicht interessiert. Natürlich kann ich Lösungen, die vielleicht andere auch nutzen könnten, für mich behalten. Soll ich? Aber Lua, wie andere Programmiersprachen, kann Funktionen enthalten, die viele User an unterschiedlichsten Stellen in ihren eigenen Programmcode einbauen können. Und da muß nicht jeder immer das Rad neu erfinden. In diesem Beispiel die Funktion Shuffle() , die eine vorhandene Liste nimmt und die Elemente per Zufall neu anordnet. Da braucht es auch kein Beispiel, denn das kann man auf jede beliebige eindimensionale Liste im MBS anwenden. In diesem Fall ist es die Liste "tt_tbl", die an der Drehscheibe als Variable hinterlegt ist und alle möglichen Weichenstellungen von 1 bis 26 enthält. Also (1,2,3,4,5,...,26) Die gezeigte Funktion Shuffle macht daraus dann z.B. (10,2,13,20,4,8,17,...., 5) Meine Anwendung: Wenn man diesen Weichenstellungen nun Gleisobjekte zuordnet und diese auf belegt abfragt, kann man ein zufällig freies Gleis in einer Drehscheibe finden. Man kann dies aber auch nutzen, um ein zufälliges Gleis in einem Schattenbahnhof zu ermitteln. Gruß Thomas
Timba Geschrieben 11. März 2020 Geschrieben 11. März 2020 vor 2 Stunden schrieb HaNNoveraNer: kann man ein zufällig freies Gleis in einer Drehscheibe finden Warum soll man dafür die gesamte Liste umsortieren? Das ist meines Erachtens total überflüssig, da man die Zufallszahl auch direkt auf ein Gleis anwenden kann. Ist das Gleis besetzt wiederholt man die Prozedur. Je nach Verkehrsaufkommen hat man wahrscheinlich nach zwei bis drei Iterationen ein freies Gleis erwischt. Da ist dein Tool noch am sortieren.
Goetz Geschrieben 11. März 2020 Geschrieben 11. März 2020 vor 23 Minuten schrieb Timba: Warum soll man dafür die gesamte Liste umsortieren? Weil man auf diese Weise garantieren kann, dass man kein Element doppelt erwischt. Wenn du eine Liste zufällig sortierst, dann kannst du anschließend z.B. für eine Lotto-Ziehung die ersten sechs Elemente entnehmen und dabei garantieren, dass du sechs Zufallstreffer und keine Doppelten hast. Oder der HaNNoveraNer kann anschließend alle Elemente vom ersten bis zum letzten der Reihe nach entnehmen und dabei garantieren, dass er alle Positionen in zufälliger Reihenfolge anfährt bis am Ende alle Stände belegt sind.
gmd Geschrieben 11. März 2020 Geschrieben 11. März 2020 9 hours ago, Henry said: Kannitverstahn --- Keine Ahnung was das Thema bewirken soll. ich halte mich zwar nicht für ganz blöd- aber ich passe hier bei dieser Darstellungsweise... so aus der Luft gegriffen wirkt das gescriptete Zeugs so, daß sich der selbstverliebte Verfasser einen "Ich weiss aber mehr als Ihr Doofis" - Raum zur Selbstdarstellung reservieren möchte ... --- sorry --- so geht es nicht !!!! Hier lesen viele User mit, die sich ob der Lua-Kopflastigkeit des Forums nicht angesprochen aber überfordert fühlen. Schreib das bitte mal verständlich, im Bild, Wort und Beispiel. Wir möchten alle von Deinen Gedanken profitieren. meint momental grummelnd Henry Forum inhalte sollten nicht auf das kleinste gemeinsame vielfache reduziert werden. Solche posts verhindern dass man ueberhaupt etwas posted was ueber 1+1 hinausgeht. Wenn du nicht einverstanden bist dann sende eine PN und poste so etwas nicht oeffentlich, macht dich nicht gerade sympathisch, wenn dir daran ueberhaupt etwas liegt. gruss Gmd
Timba Geschrieben 11. März 2020 Geschrieben 11. März 2020 vor 46 Minuten schrieb Goetz: Wenn du eine Liste zufällig sortierst, dann kannst du anschließend z.B. für eine Lotto-Ziehung die ersten sechs Elemente entnehmen und dabei garantieren, dass du sechs Zufallstreffer und keine Doppelten hast. Warum sechs Elemente wenn man nur eins braucht? Eine Lok/ein Zug braucht nicht sechs Gleise gleichzeitig. vor 47 Minuten schrieb Goetz: Oder der HaNNoveraNer kann anschließend alle Elemente vom ersten bis zum letzten der Reihe nach entnehmen und dabei garantieren, dass er alle Positionen in zufälliger Reihenfolge anfährt bis am Ende alle Stände belegt sind. Das ist auch der Fall, wenn ich per Zufallszahl ein Element aus einer sortierten Liste nehme. Da die Funktion solange wiederholt werden muss bis das gewählte Element ein freies ist, sind am Ende ebenfalls alle Stände belegt. Außer wenn sie zwischendurch wieder verlassen werden. Dann kann es natürlich vorkommen, dass ein Element bereits zum zweiten Mal gewählt wird, während ein anderes noch gar nicht gewählt wurde. Aber genau das ist ein Wesensmerkmal des Zufalls. Aber ist mir auch egal, vielleicht habe ich auch Spielereien in meinem Projekt, die völlig überflüssig sind und merke es nicht. Bei dieser Listensortierung per Zufall will mir jedenfalls der Sinn nicht einleuchten.
Timba Geschrieben 11. März 2020 Geschrieben 11. März 2020 vor 4 Minuten schrieb gmd: macht dich nicht gerade sympathisch Immerhin hat seine Kritik bereits ein paar Likes generiert, was deiner Annahme widerspricht. Mal sehen wie viele Likes deine Erwiderung bekommt.
gmd Geschrieben 11. März 2020 Geschrieben 11. März 2020 Just now, Timba said: Immerhin hat seine Kritik bereits ein paar Likes generiert, was deiner Annahme widerspricht. Mal sehen wie viele Likes deine Erwiderung bekommt. could not care less about likes, ist nur eine facebook krankheit dass man sowas braucht. Ich war einfach nur hoeflich, haette das auch anders ausdruecken koennen. gruss gmd
Goetz Geschrieben 11. März 2020 Geschrieben 11. März 2020 vor 4 Minuten schrieb Timba: Da die Funktion solange wiederholt werden muss bis das gewählte Element ein freies ist, sind am Ende ebenfalls alle Stände belegt. Aber je mehr Stände belegt sind, desto mehr Wiederholungen sind notwendig, bis du einen Glückstreffer landest. Die Liste muss man nur einmal zufällig sortieren und kann sich dann daraus bedienen, bis sie komplett abgefrühstückt ist. Jetzt sortiert man sie per Zufallsgenerator wieder einmal neu. Die Stände an der Drehscheibe sind nicht das ideale Beispiel für den Sinn dieser Methode. Deshalb hatte ich versucht dir anhand der Lottozahlen zu demonstrieren, wozu diese Methode dienen kann.
Timba Geschrieben 11. März 2020 Geschrieben 11. März 2020 vor 40 Minuten schrieb Goetz: Aber je mehr Stände belegt sind, desto mehr Wiederholungen sind notwendig, bis du einen Glückstreffer landest. Dem kann ich nicht widersprechen. Das könnte man reduzieren indem nur freie Stände in den Pool kommen. Dann braucht man immer noch keine Zufallssortierung. vor 42 Minuten schrieb Goetz: Die Stände an der Drehscheibe sind nicht das ideale Beispiel für den Sinn dieser Methode. Wohl wahr. Ich habe mir für meine Bahnhöfe auch etwas in der Art ausgedacht. Meine Vorstellung war, dass alle vorhandenen Gleise gleichermaßen genutzt werden, dies aber in völlig chaotischer Folge. Das geschieht durch die Freigleisliste selbst. Ein einfahrender Zug erhält das erste Gleis der Liste und nach Verlassen des Bahnhofs wird das Gleis unten angefügt. Da die Züge unterschiedlich lange halten ist nach ein paar Runden die Liste von ganz alleine durchmischt. Die Liste ist als Variable abgelegt und wird so mit abgespeichert, d.h. bei jedem Neustart nimmt sie die Reihenfolge wieder auf, mit der das Programm beendet wurde. Eine Zufallssortierung ist somit absolut überflüssig. Aber wie ich bereits sagte, jeder wie er mag.
Timba Geschrieben 11. März 2020 Geschrieben 11. März 2020 vor 54 Minuten schrieb gmd: haette das auch anders ausdruecken koennen Daran habe ich keinen Zweifel.
metallix Geschrieben 11. März 2020 Geschrieben 11. März 2020 vor 7 Stunden schrieb gmd: ...... reduziert werden. Solche posts verhindern dass man ueberhaupt etwas posted was ueber 1+1 hinausgeht. Wenn du nicht einverstanden bist dann sende eine PN und poste so etwas nicht oeffentlich, macht dich nicht gerade sympathisch, wenn dir daran ueberhaupt etwas liegt. Vielleicht befolgst du besser deine eigenen Lehren. Mit der feststellung betreffend sympathy liegst du richtig.........dich betreffend . Cheers Tom
metallix Geschrieben 11. März 2020 Geschrieben 11. März 2020 vor 12 Stunden schrieb HaNNoveraNer: Da braucht es auch kein Beispiel Hi Thomas Doch! Es waere, gerade fuer Lua unbedarfte, erheblich einfacher wenn sie deine, nun ausfuehrlich in verstaendlicher sprache gemachten erleuterungen , eben auch an deiner demo betrachten und testen koennen. Waehrend du so einen script mit verbundenen augen im dunkeln hinter deinem ruecken fehlerfrei ins keyboard haemmerst koennen andere selbst unter grellem scheinwerferlicht mit dem keyboard direkt vor den augen noch fehleingaben produzieren. Dann funzt es nicht und daran ist dann wieda Lua schuld. Cheers Tom
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren
Du musst ein Benutzerkonto besitzen, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen.
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden