C#'ta Rastgele Sayı Üretme
Rastgele sayılar Dijital oyunlarda, İstatistiksel Örneklemede, Kriptografide, istatistiksel fizik hesaplamalarında, sayısal analizde, Radyo iletişiminde ve Rulet tekerleği gibi kumarhane oyunlarında yaygın olarak kullanılmaktadır
C#‘da Rastgele Sayılar Üretmek için ** Random
sınıfını kullanabiliriz**.
C# Random
Sınıfı nedir?
C# Random
sınıfı, rastgelelik için belirli istatistiksel gereksinimleri karşılayan bir dizi sayı üreten bir algoritma olan sözde rastgele sayı üretecidir.
Bu sınıfın Next()
, NextInt64()
,NextBytes()
, NextDouble()
ve NextSingle()
olmak üzere 5 yöntemi vardır
Sayı türüne bağlı olarak, yani int
,long
vb. ilgili yöntemi kullanabiliriz.
Bunu daha iyi anlamak için örnekler üzerinden gidelim
C#’ta Rastgele tamsayı üretme
C#’ta Rastgele tamsayı oluşturma adımları
- Rastgele sayı sınıfını başlatın.
Int32.MinValue
veInt32.MaxValue
arasında rastgele tamsayı döndürmek içinRandom.Next()
yöntemini kullanın.
var randomInteger = new Random();
randomInteger.Next();
randomInteger.Next();
randomInteger.Next();
randomInteger.Next();
randomInteger.Next();
/* OUTPUT :
2027076668
1095111085
535874255
1973884472
430547700
*/
Minimum ve maksimum değerler arasında Rastgele tamsayı oluşturun
Random.Next()
minimum ve maksimum değerleri parametre olarak kabul eden ve verilen değerler arasında rastgele bir tamsayı üreten aşırı yüklenmiş bir yönteme sahiptir.
100-1000 arasında rastgele sayılar üretmek için aşağıdaki kodu kullanın
Console.WriteLine("Five random integers between 100 and 1000");
for (int counter = 0; counter <= 4; counter++)
Console.WriteLine("{0}", randomNumber.Next(100, 1000));
/* OUTPUT:
Five random integers between 100 and 1000
904
853
554
290
614
*/
C#’ta Rastgele uzun sayı(Int64) üretme
C#’ta Rastgele uzun sayı yani Int64
oluşturmak için, Int64.MinValue
ve Int64.MaxValue
arasında rastgele Int64
sayısı döndüren Random.NextInt64()
yöntemini kullanın.
var RandomInt64 = new Random();
RandomInt64.NextInt64();
RandomInt64.NextInt64();
RandomInt64.NextInt64();
RandomInt64.NextInt64();
RandomInt64.NextInt64();
/* OUTPUT :
5200810282391000059
6501337495320049889
6318562423063201438
3733878081804548122
8421209223603063849
*/
Verilen Aralıkta Rastgele uzun sayı(Int64) üret
Random.Next()
‘a benzer şekilde, Random.NextInt64()
‘un da parametre olarak Aralık yani minimum ve maksimum değerleri kabul eden ve bunlar arasında rastgele bir Int64
sayısı döndüren aşırı yüklenmiş bir yöntemi vardır.
100000 ile 200000 arasında rastgele sayılar üretmek için aşağıdaki kodu kullanın
var RandomInt64 = new Random();
Console.WriteLine("Five random integers between 100000 and 200000");
for (int counter = 0; counter <= 4; counter++)
Console.WriteLine("{0}", RandomInt64.NextInt64(100000, 200000));
/* OUTPUT:
Five random long Int64 numbers between 100000 and 200000
144220
194475
185075
159433
136542
*/
Oluşturulan rastgele sayılar tamamen rastgele değildir, çünkü bunları seçmek için matematiksel bir algoritma kullanılır, ancak gerçek dünya durumlarının çoğu için yeterince iyidirler.
Rastgele sayılar üretirken yinelemelerden kaçınma
Birden fazla new Random()
sınıfı başlatıyorsanız
Rastgele sayıların kopyalarını alabilirsiniz. (Çok iş parçacıklı uygulama)
var randomOne = new Random();
var randomTwo = new Random(); // Don't do this
Bu nedenle, yalnızca bir Random()
sınıf örneğini başlatmak ve uygulama genelinde kullanmak daha iyidir.
//Function to generate unique random number using `Random()` class
private static readonly Random randomInstance = new Random();
public static int GenerateRandomNumber(int min, int max)
{
lock(randomInstance) // synchronize
{
return randomInstance.Next(min, max);
}
}
Rastgele sayılar serisi oluşturmak istiyorsanız, çok iş parçacıklı ortamda yukarıdaki yöntemi kullanın.
Kriptografik kullanma C# RandomNumberGenerator
Gerçekten benzersiz rastgele sayılar üretmek istiyorsanız, System.Security.Cryptography
kütüphanesinin bir parçası olan RandomNumberGenerator
sınıfından yararlanabilirsiniz.
Bu sınıf kriptografik olarak güvenli rastgele bir sayı üretir ve rastgele bir parola oluşturmak için uygundur.
var randomNumber= RandomNumberGenerator.GetInt32(Int32.MaxValue);
Ayrıca aralığı RandomNumberGenerator
yöntemine de aktarabiliriz.
var randomNumber= RandomNumberGenerator.GetInt32(2000,5000);
C# RNGCryptoServiceProvider
sınıfını kullanma
Bu sınıf artık kullanılmıyor, bu yöntemi kullanmayın.
RNGCryptoServiceProvider
kriptografik hizmet sağlayıcı (CSP) tarafından sağlanan uygulamayı kullanarak bir kriptografik Rastgele Sayı Üreticisi (RNG) uygular.
Aşağıdaki kodu kullanarak C# RNGCryptoServiceProvider
sınıfı ile rastgele bir sayı oluşturun.
using (RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider())
{
byte[] randomNumber = new byte[4];//4 for int32
rng.GetBytes(randomNumber);
int value = BitConverter.ToInt32(randomNumber, 0);
}
Özet
Bu eğitimde C#’ta rastgele sayı üretmenin farklı yollarını basit örneklerle öğrendik.