SORU
20 EYLÜL 2008, CUMARTESİ


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
20 EYLÜL 2008, CUMARTESİ


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]);
    }

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • chickenby

    chickenby

    2 HAZİRAN 2008
  • LaKe Lightroom Tutorials

    LaKe Lightro

    22 Temmuz 2014
  • Richard Laxa

    Richard Laxa

    30 AĞUSTOS 2012