C# programlama dilinde rasgele sayılar üretmek için Random
sınıfı kullanılır. Random
sınıfı, belirli aralıklarda rastgele sayılar üretmek için çeşitli metotlar ve özellikler sunar. Bu örnek harici sayfamızda yer alan diğer rasgele sayı kullanımı örneklerine buradan ulaşabilirsiniz.
En basit kullanımı aşağıdaki gibidir.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
using System; class Program { static void Main() { // Random sınıfından bir nesne oluşturarak rasgele sayılar üretebiliriz Random rnd = new Random(); // 0 ile 100 arasında (100 dahil değil) rastgele bir tam sayı üretme int randomNumber = rnd.Next(0, 100); Console.WriteLine("Rastgele Sayı: " + randomNumber); } } |
Bu kod, Random
sınıfından bir nesne oluşturur ve ardından Next(min, max)
metoduyla belirtilen aralıkta (min dahil, max hariç) rastgele bir tamsayı üretir. Örneğin, yukarıdaki kod 0 ile 99 arasında bir sayı üretecektir.
Eğer belirli bir tip değil de farklı türde rasgele sayılar üretmek istiyorsanız, Next()
metodunun farklı sürümlerini kullanabilirsiniz. Örneğin, NextDouble()
metodu 0 ile 1 arasında rastgele bir ondalık sayı üretir:
1 2 3 4 |
double randomDouble = rnd.NextDouble(); Console.WriteLine("Rastgele Double Sayı: " + randomDouble); |
Bunlar sadece temel kullanımlar. Random
sınıfı, daha karmaşık ihtiyaçları karşılamak için başka yöntemler de sağlar. Ancak, bu sınıfın ürettiği sayılar gerçekte tam anlamıyla rastgele değildir; çünkü başlangıç noktası ve algoritması belirli olduğu için öngörülebilirler. Güvenlik veya kriptografi gibi hassas uygulamalarda rastgelelik gerekiyorsa, Random
sınıfı yerine kriptografik rasgele sayı üretebilecek sınıfları kullanmak daha uygun olabilir.
Kriptografik olarak güvenli rasgele sayılar üretmek için System.Security.Cryptography
ad alanındaki sınıfları kullanabilirsiniz. Bu sınıflar, kriptografik olarak güvenli rasgele sayılar üretmek için tasarlanmıştır ve daha yüksek bir güvenlik seviyesi sağlarlar. Özellikle şifreleme, kimlik doğrulama ve diğer güvenlik odaklı senaryolarda bu tür rasgele sayılar kullanılır.
İşte C# kullanarak kriptografik rasgele sayı üretme örneği:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
using System; using System.Security.Cryptography; class Program { static void Main() { // RNGCryptoServiceProvider sınıfından bir nesne oluşturarak kriptografik rasgele sayılar üretebiliriz using (RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider()) { byte[] randomNumber = new byte[4]; // 4 byte'lık bir rasgele sayı oluşturulacak rng.GetBytes(randomNumber); // Rasgele sayıları byte dizisine doldur // Byte dizisini bir integer'a dönüştürerek rasgele sayıyı elde et int randomInt = BitConverter.ToInt32(randomNumber, 0); Console.WriteLine("Kriptografik Rasgele Sayı: " + randomInt); } } } |
Bu kod, RNGCryptoServiceProvider
sınıfını kullanarak kriptografik rasgele sayılar üretir. GetBytes()
yöntemi, belirtilen boyutta rasgele byte’lar doldurur. Ardından, bu byte’lar BitConverter.ToInt32()
yöntemi kullanılarak bir tamsayıya dönüştürülür.
Kriptografik olarak güvenli rasgele sayılar, RNGCryptoServiceProvider
sınıfı kullanılarak sağlanır, çünkü bu sınıf işletim sistemi tarafından sağlanan kriptografik servislerin bir parçasıdır. Bu nedenle, bu sınıfın ürettiği rasgele sayılar, sadece güvenlik açısından yüksek standartlara sahip değil aynı zamanda tekrarlanabilirlik açısından da daha iyidir.