giovedì 24 novembre 2016

Ordinare a caso una sequenza

Oggi vedremo una peculiarità del comando sort  molto sottovalutata.
Come esempio creiamo una sequenza e ordiniamola in modo casuale:
put "1,2,3,4,5,6" into temp
sort items of temp by random(6)

nell'esempio il codice usa comando sort con la funzione random(). Il comando sort per ogni elemento chiede ogni volta alla funzione dopo la parola by il valore per l'ordinamento. Poichè random() è una funzione che estrae un valore casuale, nell'esempio da 1 a 6, l'ordine dei numeri sarà casuale.
Questo sistema è comodissimo nel caso di estrazioni di numeri casuali, perchè creiamo prima l'elenco dei numeri gli ordiniamo a caso e prendiamo i primi n che ci servono!
Rispetto a tanti altri modi per estrarre dei numeri casuali, non dobbiamo fare alcuna verifica se il numero estratto è già contenuto nei numeri generati precedentemente.
Al posto di random() si può usare un funzione personalizzata e ottenere ordinamenti con logiche molto complesse.