En iyi yanıtlayıcılar
Rastgele sayi oluşturucu

Soru
-
Merhaba C# ta rastgele sayi olusturan bir program yaptım.Kullanıcı şuan 0 ile bir milyar(1.000.000.000) arası sayı üretebiliyor fakat sorun şu ki bir milyar üstü sayilarida katmak istiyorum ama olmuyor hata veriyor. Değişken olarakta bildigim kadarıyla en büyük tam sayı değişkeni long' u kullandım. bu sorunu nasıl çözebilirim.
Yanıtlar
-
byte düzeyinde rastgele oluşturmanız kafi. 8 tanesini yanyana eklerseniz long yapar.
- Yanıt Olarak İşaretleyen csharpogrenmeyecalisiyorum 28 Ağustos 2019 Çarşamba 11:30
Tüm Yanıtlar
-
byte düzeyinde rastgele oluşturmanız kafi. 8 tanesini yanyana eklerseniz long yapar.
- Yanıt Olarak İşaretleyen csharpogrenmeyecalisiyorum 28 Ağustos 2019 Çarşamba 11:30
-
-
-
Random sınıfı sistem saatini mi kullanıyor ? Hayır tabii ki. Başlangıç değerini boş geçersen saati alır.Ama algoritmanın saat ile zerre ilgisi yok. Farklılık saatten kaynaklamıyor.
- Düzenleyen Cihan YakarMVP 28 Ağustos 2019 Çarşamba 18:37
-
-
Rastgelelik konusunda Random sınıfından daha başarılıdır. Çünkü sistem saatini kullanmadan sayı üretiyor.
Ben diyorum ki Random sınıfının algoritmasında sistem zamanı kullanılmıyor. Sen de diyorsun ki parametresiz yapıcı metodu seed değeri olarak sistem zamanını kullanıyor o sebeple sistem zamanını kullanıyor kabul edebiliriz. Peki RNGCS algoritmasının içinde sistem zamanını kullanıyor onu ne yapacağız? Bu ikisinin arasındaki fark sistem zamanından çok daha öte.
Ama bence gereksiz, RNGCryptoService tek başına yetiyor da artıyor bence.
Bugüne kadar kullandığın senaryolarda yetmiştir. Fakat RNGCS'nin iki büyük dezavantajı var. 1. çok yavaş, 2. tekrarlanabilir değil. Bu sebeple oyunlarda, şifreleme algoritmalarının içinde vs kullanılamıyor.
- Düzenleyen Cihan YakarMVP 28 Ağustos 2019 Çarşamba 19:47
-
-
Doğru okumuşsun. Ama anahtar oluşturmak için kullanıyor. Sistem saati de dahil olmak üzere bir çok değişkeni kullanarak rastgele dağılıma daha uygun sayılar oluşturuyor. Random sınıfı ise aslında oldukça statik ve ürettiği sayıların dağılımının entropisi daha düşük. Algoritmanın içine girdiğimiz zaman algoritmanın tekrarlanabilir olması gerekiyor. Zira içinde rastgelelik barındıran çift yönlü bir şifreleme algoritması yazmak istersen aynı rastgele sayıların aynı sırayla üretilmesi gerekir ki bunu geri açabilme şansın olsun. Veya hash algoritması yazıyorsan belirli bir değer için her zaman aynı hashi üretmek istersin :)
- Düzenleyen Cihan YakarMVP 29 Ağustos 2019 Perşembe 10:00