• Regolamento Macrocategoria DEV
    Prima di aprire un topic nella Macrocategoria DEV, è bene leggerne il suo regolamento. Sei un'azienda o un hosting/provider? Qui sono anche contenute informazioni per collaborare con Sciax2 ed ottenere l'accredito nella nostra community!

Mischiare Array in C#?

frakwo

Utente Normale
Autore del topic
4 Dicembre 2010
74
0
Miglior risposta
0
Salve ragazzi avrei bisogno di mescolare un Array in C#
Ho un Array di Nome mazzo contente 52 carte francesi es ( 1Q,2Q,3Q)

come potrei mescolarle ??:emoji_smoking:

Vi ringrazio per le eventuali Risposte :smile:
 
Usi un ciclo random. E il numero che esce è il numero dell'elemento dell'array. Fai ripetere questa azione varie volte, facendo ricordare al programma il nuovo ordine.
 
Citando da wikipedia:
In a computer, shuffling is equivalent to generating a random permutation of the cards. There are two basic algorithms for doing this, both popularized by Donald Knuth.
The first is simply to assign a random number to each card, and then to sort the cards in order of their random numbers. This will generate a random permutation, unless any of the random numbers generated are the same as any others (i.e. pairs, triplets etc). This can be eliminated either assigning new random numbers to these cases, or reduced to an arbitrarily low probability by choosing a sufficiently wide range of random number choices. If using efficient sorting such as mergesort or heapsort, this is an O(n log n) algorithm.
The second, generally known as the Knuth shuffle or Fisher–Yates shuffle, is a linear-time algorithm which involves moving through the pack from top to bottom, swapping each card in turn with another card from a random position in the part of the pack that has not yet been passed through (including itself). Providing that the random numbers are unbiased, this will always generate a random permutation.
 
Riferimento: Mischiare Array in C#?

Ricordo che esiste Array.Reserve(variabile_array); per ordinare al contrario il contenuto di un array.