Seite 1 von 2
Random List
Verfasst: 02.08.2019 16:35
von Muttonhead
Hallo @all:
Ich probier mal wieder ein wenig herum und habe eine Frage zu Listen.
Es gibt eine gut funktionierende Sortier-Funktion in PB für Listen.
Obwohl ich ein eigenes Listenhandling (so mit Adressengedööns, previous,next oder parent,child usw.) bevorzuge. Also wenn man was fasch machen kann, dann auch richtig:)
Zurück zur eigentlichen Frage meinerseits: Hat jemand schon mal ne Art "RandomList"-Prozedur für PB-native Listen realisiert?
oder hilft dabei einfach *RTFM*?
Mutton
Re: Random List
Verfasst: 02.08.2019 16:39
von RSBasic
Hallo Muttonhead,
vielleicht hilft dir dieser Thread:
viewtopic.php?f=16&t=23928
Re: Random List
Verfasst: 02.08.2019 16:44
von STARGÅTE
Dafür gibt es nativ:
RandomizeList()
Re: Random List:solved
Verfasst: 02.08.2019 17:05
von Muttonhead
vielen Dank euch beiden...
@STARG...((whatAE0).. ich bekomms grad nicht hin

) : genau nach sowas hab ich gesucht... in der Hilfe ist bei List nicht verlinkt
@RSBASIC: als Inspiration für ein ordentlich geschütteltes Index-Array als Jumplist. Finde ich iwie reizvoll.
Wie gesagt, dank euch beiden... solved!
Mutton
Re: Random List
Verfasst: 02.08.2019 19:31
von mk-soft
Es gibt Sachen in Purebasic die ich noch gesehen habe...
Wofür braucht man den sowas?
Re: Random List
Verfasst: 02.08.2019 20:11
von Muttonhead
@mk: keine ahnung, derzeit versuch ich mich grad an einem Versuchsträger für einem Bin-Packing Problem.
Ich will einfach mal via BruteForce + Zeitlimiter versuchen, ein Optimum zu erreichen, dafür benötige ich so eine Random-Funktion. Ich weiß, andere haben darüber ne Doktorarbeit geschrieben.
Mutton
Re: Random List
Verfasst: 02.08.2019 20:31
von Derren
mk-soft hat geschrieben:
Es gibt Sachen in Purebasic die ich noch gesehen habe...
Wofür braucht man den sowas?
Dito
kA. vielleicht für Spiele. Kartenspiele z.B. Oder eine Shuffle-Funktion für einen Player
Re: Random List:solved
Verfasst: 03.08.2019 11:03
von Nino
Muttonhead hat geschrieben:genau nach sowas hab ich gesucht... in der Hilfe ist bei List nicht verlinkt
Aber sicher ist das in der Hilfe zu Listen verlinkt:
https://www.purebasic.com/german/docume ... index.html
Re: Random List
Verfasst: 05.08.2019 15:03
von diceman
Eine Möglichkeit ist es natürlich, die Liste zu randomisieren, und dann einfach mit
FirstElement(myList()) das erste Element auszuwählen. Alternativ, wenn du dir ein zufälliges Element aus einer Liste herauspicken möchtest (meine bevorzugte Methode), geht das so:
Die -1 ist wichtig, da
SelectElement() das erste Element mit 0 beziffert,
ListSize() aber nur eine 0 zurückgibt, sofern die Liste leer ist); das heißt, wenn du bei einer Liste mit 5 Elementen mittels
SelectElement() "Das fünfte Element" auswählen würdest, hätte dieses den Index 4, aber
ListSize() würde bei einer Abfrage der Listengröße natürlich weiterhin eine 5 zurückgeben.
Ich habe mir für diese Zwecke ein Macro gebastelt (sehr hilfreich für
pcg a.k.a.
procedural content generation):
Code: Alles auswählen
Macro _SelectRandomElement(thisList)
SelectElement(thisList, Random(ListSize(thisList)-1))
EndMacro
Eine strukturierte Liste nach der Größe eines bestimmten Attributes zu sortieren (im nachfolgenden Beispiel in aufsteigender Reihenfolge), müßte folgendermaßen gehen:
Code: Alles auswählen
Structure MY_STRUCT
index.i
someAttribute.i
EndStructure
NewList myList.MY_STRUCT()
For a = 1 to 10
AddElement(myList())
myList()\index = a
myList()\someAttribute = Random(100,1)
Next
SortStructuredList(myList(), #PB_Sort_Ascending, OffsetOf(MY_STRUCT\someAttribute), TypeOf(MY_STRUCT\someAttribute))
ForEach myList()
Debug "" + myList()\index + ". " + myList()\someAttribute
Next
Re: Random List
Verfasst: 05.08.2019 17:02
von diceman
//EDIT:
Ey, ich bin blöd.
Warum sagt mir keiner, daß das da oben im Code
NewList myList.MY_STRUCT() heißen muß, und nicht
Define myList.MY_STRUCT() ...
Sorry, habe den Code oben von der Arbeit aus verfasst, ohne aktive PureBasic-Umgebung, in der ich das hätte testen können.
Sollte jetzt alles stimmen.