BİLGİ SAYAMIYORUM beta

C# da, rastgele bir sayı ya da rastgele harf ve rakamlardan oluşan bir yazı nasıl oluşturulur?

0

Bu rastgele değer üretme işlemini her dilde gösterme çalışıyorum, zira ne kadar kolay bir işlem olsa da dillerin farklarını direk belli eden yapılarını çok seviyorum. Mesela C# da rastgele bir sayı oluşturmak istiyorsanız Random sınıfını kullanıyorsanız. Gerçek rastgelelik değil tabi bu sınıfın oluşturduğu, zamanın en küçük birimini yem olarak kullanıp öyle rastgele bir sayı üretiyor, "Random((int)DateTime.Now.Ticks)" methodun içinde olan şey aslında:

Random rastgele = new Random();
int birOnArasinda = rastgele.Next(0, 11);
int birYuzArasinda = rastgele.Next(101);

Gördüğünüz gibi ilk örneği aralık vererek, ikincisini de üst limit vererek yaptım. Her seferinde Random() ile yeni bir rastgelelik nesnesi oluşturmanız gerekmiyor, çok da yararlı bir pratik değil öyle yapmanız. Bu şekilde "Next" diyerek yenisine ulaşmanızı ya da kendinize bambaşka bir rastgelelik fonksiyonu yazmanızı tavsiye edebilirim.

Sayı ve harflerden rastgele oluşan bir içerik oluşturmak ise yine fazlasıyla basit tabii yukarıdaki random sınıfını kullanarak. İçinden seçim yapacağımız karakterler listesini belirleyip, bu listenin uzunuğuna göre yukarıdaki fonksiyonu çağırıyoruz ve bu işlemi oluşmasını istediğimiz içeriğin her karakteri için yapıyoruz:

private static string Rastgele(int uzunluk){
     const string karakterler = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
     var yarat = new StringBuilder();
     for (var i = 0; i < uzunluk; i++){
          var karakter = karakterler[Random.Next(0, karakterler.Length)];
          yarat.Append(karakter);
     }
     return yarat.ToString();
}

Bu işlemi LINQ kullanarak da şöyle yapabilirsiniz:

private static Random rastgele = new Random();
public static string RastgeleYarat(int uzunluk){
     const string karakterler = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
     return new string(Enumerable.Repeat(karakterler, uzunluk)
          .Select(r => r[rastgele.Next(r.Length)]).ToArray());
}

BENZER 7

Kimse etkileşime girmemiş

ETİKETLER