Mélanger un tableau en C#
-
Mélanger un tableau avec la classe
Random
enC#
-
Mélangez un tableau avec la classe
RNGCryptoServiceProvider
enC#
Ce didacticiel abordera les méthodes pour mélanger un tableau en C#.
Mélanger un tableau avec la classe Random
en C#
La classe Random
génère des nombres aléatoires en C#. La méthode Random.Next()
génère une valeur entière aléatoire. Nous pouvons utiliser la méthode Random.Next()
avec LINQ pour mélanger un tableau en 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);
}
}
}
}
Production:
3 4 5 1 2
Dans le code ci-dessus, nous avons mélangé le tableau d’entiers arr
avec la méthode Random.Next()
et LINQ en C#. Nous avons d’abord généré un index aléatoire avec la méthode Random.Next()
et placé chaque élément à un index aléatoire avec la méthode OrderBy()
. Nous avons ensuite converti la structure de données résultante en tableau avec la méthode ToArray()
.
Mélangez un tableau avec la classe RNGCryptoServiceProvider
en C#
La classe RNGCryptoServiceProvider
en C# génère des nombres aléatoires. Cette méthode est plus fiable que l’approche précédente car la classe RNGCryptoServiceProvider
est plus aléatoire que la classe Random
. La classe RNGCryptoServiceProvider
est principalement utilisée pour le chiffrement, elle est donc plus sécurisée que la classe Random
. La méthode GetBytes()
de la classe RNGCryptoServiceProvider
permet de remplir un tableau d’octets avec une séquence de valeurs aléatoires. Nous pouvons utiliser la méthode Convert.ToInt32()
pour convertir cette valeur d’octet aléatoire en un entier. Nous pouvons alors utiliser cet entier aléatoire comme index pour chaque élément. L’exemple de code suivant nous montre comment mélanger un tableau avec la classe RNGCryptoServiceProvider
en 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);
}
}
}
}
Production:
5 1 2 4 3
La logique suivie dans cet exemple est la même que l’approche précédente. La différence est que nous utilisons ici la classe RNGCryptoServiceProvider
pour générer un index aléatoire pour notre tableau. Nous avons défini la méthode Next()
qui génère un index entier aléatoire en utilisant 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