C# programlama dilinde rassal uygulamalara sayısal çok uygulama yaptık, bügün de tarihsel veriler ile nasıl rastgele değerler üretebileceğimiz ile geceye başlayalım.
DateTime veri tipi için geliştirilmiş ve rastgele tarih üretmeye yarayan hazır bir metod olmadığı için bu problemi çözerken yaratıcılığımızı kullanmakta özgürüz. Dolayısıyla birçok çözüm içinden istediğimiz optimal çözümlerden birisini seçerek rastgele tarihler üretebiliriz.
Olası çözümlerden birisi, üreteceğimiz rastgele veriler için mümkün olan en küçük tarihi baz alarak bu tarih ile bugün arasıdaki süreyi rastgele olarak üretmek ve baz tarihe eklemek olabilir.
Random random = new Random();
DateTime baslangic = new DateTime(1900, 1, 1);
int maxGun = (DateTime.Today - baslangic).Days;
DateTime rastgeleTarih = baslangic.AddDays(random.Next(maxGun));
Bu işlemi bir döngü içerisinde 10 kere tekrarlayalım ve ürettiğimiz rastgele 10 tarihin neler olduğuna bakalım.
Random random = new Random();
DateTime baslangic = new DateTime(1900, 1, 1);
int maxGun = (DateTime.Today - baslangic).Days;
for (int i=0; i<10; i++)
{
DateTime rastgeleTarih = baslangic.AddDays(random.Next(maxGun));
System.Console.WriteLine(rastgeleTarih.ToShortDateString());
}
Çıktı:
1/7/1952
10/29/1992
4/20/1925
4/10/1984
2/22/1918
4/3/1930
8/23/1994
6/3/1918
3/5/1981
7/17/1922
Önceki benzer içerikli yazılarımdan bazıları için;
bkz: C# ile iki tarih arasında kaç gün olduğunu bulmak
bkz: C# ile List'ten rastgele eleman seçmek
bkz: C# ile diziden rastgele eleman seçmek
bkz: C# ile string'in karakterlerini rastgele değiştirmek ve sıralamak
bkz: C# ile rastgele çift sayı üretme uygulaması
bkz: C# ile rastgele yazı tura atma uygulaması