Mische ein Array in C#
-
Mische ein Array mit der Klasse
Random
inC#
-
Mischen Sie ein Array mit der Klasse
RNGCryptoServiceProvider
inC#
In diesem Tutorial werden die Methoden zum Mischen eines Arrays in C# erläutert.
Mische ein Array mit der Klasse Random
in C#
Die Klasse Random
generiert Zufallszahlen in C#. Die Methode Random.Next()
generiert einen zufälligen ganzzahligen Wert. Wir können die Methode Random.Next()
mit LINQ verwenden, um ein Array in C# zu mischen.
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);
}
}
}
}
Ausgabe:
3
4
5
1
2
Im obigen Code haben wir das Array der Ganzzahlen arr
mit der Methode Random.Next()
und LINQ in C# gemischt. Wir haben zuerst einen Zufallsindex mit der Methode Random.Next()
generiert und jedes Element mit der Methode OrderBy()
an einem Zufallsindex platziert. Anschließend haben wir die resultierende Datenstruktur mit der Methode ToArray()
in ein Array konvertiert.
Mischen Sie ein Array mit der Klasse RNGCryptoServiceProvider
in C#
Die Klasse RNGCryptoServiceProvider
in C# generiert Zufallszahlen. Diese Methode ist zuverlässiger als der vorherige Ansatz, da die Klasse RNGCryptoServiceProvider
zufälliger ist als die Klasse Random
. Die Klasse RNGCryptoServiceProvider
wird hauptsächlich für die Verschlüsselung verwendet und ist daher sicherer als die Klasse Random
. Die Methode GetBytes()
der Klasse RNGCryptoServiceProvider
wird verwendet, um ein Array von Bytes mit einer Folge von Zufallswerten zu füllen. Wir können die Methode Convert.ToInt32()
verwenden, um diesen zufälligen Bytewert in eine Ganzzahl umzuwandeln. Wir können diese zufällige Ganzzahl dann als Index für jedes Element verwenden. Das folgende Codebeispiel zeigt uns, wie wir ein Array mit der Klasse RNGCryptoServiceProvider
in C# mischen können.
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);
}
}
}
}
Ausgabe:
5
1
2
4
3
Die in diesem Beispiel verfolgte Logik ist dieselbe wie beim vorherigen Ansatz. Der Unterschied besteht darin, dass wir hier die Klasse RNGCryptoServiceProvider
verwenden, um einen Zufallsindex für unser Array zu generieren. Wir haben die Methode Next()
definiert, die mit der Klasse RNGCryptoServiceProvider
einen zufälligen Ganzzahlindex generiert.
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