Mescola un array in C#
-
Mescola un array con la classe
Random
inC#
-
Mescolare un array con la classe
RNGCryptoServiceProvider
inC#
Questo tutorial discuterà i metodi per mescolare un array in C#.
Mescola un array con la classe Random
in C#
La classe Random
genera numeri casuali in C#. Il metodo Random.Next()
genera un valore intero casuale. Possiamo usare il metodo Random.Next()
con LINQ per mescolare un array in C#.
using System;
using System.Linq;
using System.Security.Cryptography;
namespace randomize_array {
class Program {
static void Main(string[] args) {
int[] arr = { 1, 2, 3, 4, 5 };
Random random = new Random();
arr = arr.OrderBy(x => random.Next()).ToArray();
foreach (var i in arr) {
Console.WriteLine(i);
}
}
}
}
Produzione:
3 4 5 1 2
Nel codice precedente, abbiamo mescolato l’array di interi arr
con il metodo Random.Next()
e LINQ in C#. Abbiamo prima generato un indice casuale con il metodo Random.Next()
e posizionato ogni elemento in un indice casuale con il metodo OrderBy()
. Abbiamo quindi convertito la struttura dati risultante in un array con il metodo ToArray()
.
Mescolare un array con la classe RNGCryptoServiceProvider
in C#
La classe RNGCryptoServiceProvider
in C# genera numeri casuali. Questo metodo è più affidabile dell’approccio precedente perché la classe RNGCryptoServiceProvider
è più casuale della classe Random
. La classe RNGCryptoServiceProvider
viene utilizzata principalmente per la crittografia, quindi è più sicura della classe Random
. Il metodo GetBytes()
della classe RNGCryptoServiceProvider
viene utilizzato per riempire un array di byte con una sequenza di valori casuali. Possiamo usare il metodo Convert.ToInt32()
per convertire questo valore di byte casuale in un numero intero. Possiamo quindi utilizzare questo numero intero casuale come indice per ogni elemento. Il seguente esempio di codice ci mostra come possiamo mescolare un array con la classe RNGCryptoServiceProvider
in C#.
using System;
using System.Linq;
using System.Security.Cryptography;
namespace randomize_array {
class Program {
static int Next(RNGCryptoServiceProvider random) {
byte[] randomInt = new byte[4];
random.GetBytes(randomInt);
return Convert.ToInt32(randomInt[0]);
}
static void Main(string[] args) {
int[] arr = { 1, 2, 3, 4, 5 };
RNGCryptoServiceProvider random = new RNGCryptoServiceProvider();
arr = arr.OrderBy(x => Next(random)).ToArray();
foreach (var i in arr) {
Console.WriteLine(i);
}
}
}
}
Produzione:
5 1 2 4 3
La logica seguita in questo esempio è la stessa dell’approccio precedente. La differenza è che qui stiamo usando la classe RNGCryptoServiceProvider
per generare un indice casuale per il nostro array. Abbiamo definito il metodo Next()
che genera un indice intero casuale utilizzando la classe RNGCryptoServiceProvider
.
Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.
LinkedIn