Array Shuffler

Hai una curiosità o un problema con Game Maker? Domanda e ti sarà risposto!
Rispondi
Avatar utente
Xxshark888xX
Membro d'elite
Messaggi: 1497
Iscritto il: 30/05/2012, 19:17
Specialità: Un poco di tutto
Uso: GM:Studio 1.4 Pro
Località: Earth
Contatta:

Array Shuffler

Messaggio da Xxshark888xX »

Salve!

Vorrei sapere qual'e' il metodo migliore (in termini di velocita' e performance) per eseguire uno shuffle (pseudo-random) di un array partendo pero' da un preciso "numero" (seed).
Per esempio: Inserisco come seed il numero 9349 e da quel numero deve avvenire una permutazione pseudo-random di un array.

Quindi. Array X -> Shuffle(9349) -> Array Y. Poi, inserendo l'array Y -> Shuffle(9349) -> riottenere l'array X.

Esiste qualche algoritmo?
Contatti
Steam
Facebook

Gif
Spoiler
Immagine
Immagine
Immagine
Immagine

Jak
Admin
Messaggi: 12355
Iscritto il: 19/08/2009, 16:20
Specialità: Programmazione 3D
Uso: GM:Studio 2
Contatta:

Re: Array Shuffler

Messaggio da Jak »

Se hai un discreto numero di elementi il più veloce probabilmente è copiare l'array su una list e lasciar fare il resto a GM, specialmente in VM.
https://docs.yoyogames.com/source/dadio ... uffle.html
Time to feel, time to believe
Dare to see what may come of our future
Lift your head, broaden your gaze
Speak your mind and your thoughts they will follow you

Avatar utente
Xxshark888xX
Membro d'elite
Messaggi: 1497
Iscritto il: 30/05/2012, 19:17
Specialità: Un poco di tutto
Uso: GM:Studio 1.4 Pro
Località: Earth
Contatta:

Re: Array Shuffler

Messaggio da Xxshark888xX »

Jak ha scritto:Se hai un discreto numero di elementi il più veloce probabilmente è copiare l'array su una list e lasciar fare il resto a GM, specialmente in VM.
https://docs.yoyogames.com/source/dadio ... uffle.html
Grazie della riposta Jak. Ma il problema non e' lo shuffler vero e proprio, ma bensi' riuscire a mescolare l'array (lista, o cosa sia) in base ad un seed, quindi dopo aver ottenuto l'array X mescolata con un certo seed, vorrei che se mescolo di nuovo l'array X con lo stesso seed, ri-ottengo cosi' com'era l'array prima di venir mescolato.

E' qui che non so come fare...
Contatti
Steam
Facebook

Gif
Spoiler
Immagine
Immagine
Immagine
Immagine

Avatar utente
boxbuilder
Membro
Messaggi: 158
Iscritto il: 25/06/2015, 10:37
Specialità: programmatore
Uso: GM:Studio 1.4 HTML5
Contatta:

Re: Array Shuffler

Messaggio da boxbuilder »

Xxshark888xX ha scritto:Esiste qualche algoritmo?
Ciao, hai visto questo?

https://en.wikipedia.org/wiki/Fisher%E2 ... es_shuffle

È una permutazione ciclica molto efficiente. Più sotto c'è anche un sattoloCycle molto carino (rispetta le quote rosa).
L'unica cosa che ti serve per effettuare l'"unscrambe" è memorizzare di volta in volta la j per ogni iterazione.

Jak
Admin
Messaggi: 12355
Iscritto il: 19/08/2009, 16:20
Specialità: Programmazione 3D
Uso: GM:Studio 2
Contatta:

Re: Array Shuffler

Messaggio da Jak »

Cè anche scritto sul link che ti ho mandato. La funzione ds_list_sort() usa il seed integrato di GM.
Quindi ti basta usare:
https://docs.yoyogames.com/source/dadio ... _seed.html
Time to feel, time to believe
Dare to see what may come of our future
Lift your head, broaden your gaze
Speak your mind and your thoughts they will follow you

Avatar utente
Tizzio
GMI Honor
Messaggi: 5836
Iscritto il: 29/06/2010, 23:43
Specialità: programmazione
Contatta:

Re: Array Shuffler

Messaggio da Tizzio »

Jak ha scritto:Cè anche scritto sul link che ti ho mandato. La funzione ds_list_sort() usa il seed integrato di GM.
Quindi ti basta usare:
https://docs.yoyogames.com/source/dadio ... _seed.html
Si ma il sort è piu' lento di uno shuffle

Avatar utente
Xxshark888xX
Membro d'elite
Messaggi: 1497
Iscritto il: 30/05/2012, 19:17
Specialità: Un poco di tutto
Uso: GM:Studio 1.4 Pro
Località: Earth
Contatta:

Re: Array Shuffler

Messaggio da Xxshark888xX »

Grazie delle risposte. Tecnicamente non mi serve per Game Maker, ma in C#.
Ora do un'occhiata al link che ha postato boxbuilder!

[Edit]
Proprio ciò che cercavo, grazie! :cappa:
Contatti
Steam
Facebook

Gif
Spoiler
Immagine
Immagine
Immagine
Immagine

Avatar utente
cp94
Moderatore
Messaggi: 2789
Iscritto il: 04/07/2009, 19:18
Specialità: ddd
Località: Brescia
Contatta:

Re: Array Shuffler

Messaggio da cp94 »

Se è un ArrayList o una List<> è presto fatto:

Codice: Seleziona tutto

// b è il tuo array, in questo caso ArrayList
ArrayList a = new ArrayList();
while (b.Count > 0) {
    a.Insert(Random.Range(0, a.Count),  b[0]);
    b.RemoveAt(0);
}
Games you should check out
Naemo
E T U S
Overgravity
Inside the Code

Immagine

Jak
Admin
Messaggi: 12355
Iscritto il: 19/08/2009, 16:20
Specialità: Programmazione 3D
Uso: GM:Studio 2
Contatta:

Re: Array Shuffler

Messaggio da Jak »

Tizzio ha scritto:
Jak ha scritto:Cè anche scritto sul link che ti ho mandato. La funzione ds_list_sort() usa il seed integrato di GM.
Quindi ti basta usare:
https://docs.yoyogames.com/source/dadio ... _seed.html
Si ma il sort è piu' lento di uno shuffle
Ho scritto male il nome della funzione, mea culpa. Volevo dire ds_list_shuffle();
Time to feel, time to believe
Dare to see what may come of our future
Lift your head, broaden your gaze
Speak your mind and your thoughts they will follow you

Avatar utente
Xxshark888xX
Membro d'elite
Messaggi: 1497
Iscritto il: 30/05/2012, 19:17
Specialità: Un poco di tutto
Uso: GM:Studio 1.4 Pro
Località: Earth
Contatta:

Re: Array Shuffler

Messaggio da Xxshark888xX »

Random.Range? In Visual Studio 2015 con .NET 4.5 non esiste come funzione, comunque opto per l'algoritmo Fisher-Yates
Contatti
Steam
Facebook

Gif
Spoiler
Immagine
Immagine
Immagine
Immagine

Avatar utente
cp94
Moderatore
Messaggi: 2789
Iscritto il: 04/07/2009, 19:18
Specialità: ddd
Località: Brescia
Contatta:

Re: Array Shuffler

Messaggio da cp94 »

Ah scusa, ragionavo come se fosse Unity :asd:
Con un iterazione sei a posto.

Codice: Seleziona tutto

while (b.Count > 0) {
    a.Insert(Random(a.Count),  b[0]);
    b.RemoveAt(0);
}
Games you should check out
Naemo
E T U S
Overgravity
Inside the Code

Immagine

Avatar utente
Xxshark888xX
Membro d'elite
Messaggi: 1497
Iscritto il: 30/05/2012, 19:17
Specialità: Un poco di tutto
Uso: GM:Studio 1.4 Pro
Località: Earth
Contatta:

Re: Array Shuffler

Messaggio da Xxshark888xX »

:asd: Comunque ho risolto! :cappa:
Contatti
Steam
Facebook

Gif
Spoiler
Immagine
Immagine
Immagine
Immagine

Rispondi

Chi c’è in linea

Visitano il forum: Nessuno e 25 ospiti