En iyi şekilde dize bir dizi rastgele .NET
Ne ile dizeleri bir dizi rastgele için en iyi yoldur .NET? Benim dizi hakkında 500 dizeleri içerir ve aynı dizeleri ama rasgele sırada Array
Yeni oluşturmak istiyorum.
Lütfen bir C vardır# cevap örneği.
CEVAP
Eğer .3.5, aşağıdaki IEnumerable kullanabilirsiniz serinlik NET (VB.NET, C#, ama fikir açık olmalıdır...):
Random rnd=new Random();
string[] MyRandomArray = MyArray.OrderBy(x => rnd.Next()).ToArray();
Edit: TAMAM ve burada ilgili VB.NET kod:
Dim rnd As New System.Random
Dim MyRandomArray = MyArray.OrderBy(Function() rnd.Next)
İkincisi, sözlerine yanıt olarak düzenleme Sistemi.Rastgele "değil, iş parçacığı için güvenli" ve "uygun oyuncak uygulamaları" nedeniyle geri dönen bir zaman tabanlı sırası: olarak kullanılan örnek, Rasgele() mükemmel bir iş parçacığı için güvenli, tabii sen izin rutin hangi rastgele dizi re-girdi, bu durumda ihtiyacınız olacak bir şey gibi lock (MyRandomArray)
neyse amacıyla değil, bozuk veri, koruyacak rnd
de.
Ayrıca, iyi anlaşılan bir Sistem olmalı.Entropi kaynağı çok güçlü değil gibi rasgele. Sanki bir şey güvenlikle ilgili yaptığın bir şey System.Security.Cryptography.RandomNumberGenerator
türetilen kullanmalısınız MSDN documentation kaydetti. Örneğin:
using System.Security.Cryptography;
...
RNGCryptoServiceProvider rnd = new RNGCryptoServiceProvider();
string[] MyRandomArray = MyArray.OrderBy(x => GetNextInt32(rnd)).ToArray();
...
static int GetNextInt32(RNGCryptoServiceProvider rnd)
{
byte[] randomInt = new byte[4];
rnd.GetBytes(randomInt);
return Convert.ToInt32(randomInt[0]);
}
'dizi arasındaki fark ne ve dize?...
Nasıl en iyi Ruby rastgele bir dize ol...
Nasıl (karışık) JavaScript bir dizi ra...
Nasıl rastgele bir dizi seçim muyum?...
PHP rastgele dize jeneratör...