Random List
- Muttonhead
- Beiträge: 20
- Registriert: 25.06.2017 14:06
- Computerausstattung: I7
Random List
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
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
PureBasic 5.62 (Windows 10 Home - x64) | i7 7700HQ | 32GB | HD Graphics 630 / GeForce GTX 1060 Max-Q
Re: Random List
Dafür gibt es nativ: RandomizeList()
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
- Muttonhead
- Beiträge: 20
- Registriert: 25.06.2017 14:06
- Computerausstattung: I7
Re: Random List:solved
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
@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
PureBasic 5.62 (Windows 10 Home - x64) | i7 7700HQ | 32GB | HD Graphics 630 / GeForce GTX 1060 Max-Q
Re: Random List
Es gibt Sachen in Purebasic die ich noch gesehen habe...STARGÅTE hat geschrieben:Dafür gibt es nativ: RandomizeList()
Wofür braucht man den sowas?
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
- Muttonhead
- Beiträge: 20
- Registriert: 25.06.2017 14:06
- Computerausstattung: I7
Re: Random List
@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
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
Zuletzt geändert von Muttonhead am 03.08.2019 08:30, insgesamt 2-mal geändert.
PureBasic 5.62 (Windows 10 Home - x64) | i7 7700HQ | 32GB | HD Graphics 630 / GeForce GTX 1060 Max-Q
Re: Random List
mk-soft hat geschrieben:Es gibt Sachen in Purebasic die ich noch gesehen habe...STARGÅTE hat geschrieben:Dafür gibt es nativ: RandomizeList()
Wofür braucht man den sowas?
Dito
kA. vielleicht für Spiele. Kartenspiele z.B. Oder eine Shuffle-Funktion für einen Player
Signatur und so
Re: Random List:solved
Aber sicher ist das in der Hilfe zu Listen verlinkt: https://www.purebasic.com/german/docume ... index.htmlMuttonhead hat geschrieben:genau nach sowas hab ich gesucht... in der Hilfe ist bei List nicht verlinkt
Re: Random List
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):
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
SelectElement(myList(), Random(ListSize(myList())-1))
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
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
Zuletzt geändert von diceman am 05.08.2019 17:06, insgesamt 3-mal geändert.
Now these points of data make a beautiful line,
And we're out of Beta, we're releasing on time.
And we're out of Beta, we're releasing on time.
Re: Random List
//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.
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.
Now these points of data make a beautiful line,
And we're out of Beta, we're releasing on time.
And we're out of Beta, we're releasing on time.