none
Random Sınıfı hakkında RRS feed

  • Soru

  • Random sınıfı ile basamak değerini kendimiz belirleyebileceğimiz belli bir aralıkta yine başlangıç karakterini kendimiz belirleyeceğimiz biribirinden farkı sayıları nasıl üretebiliriniz. 

    Örneğin Basamak Sayısı 8

    ilk İki rakam 15

    ilk iki rakam + 10000 ile 100000 arasında ramdom sayı

    şimdiden teşekkürler

    23 Nisan 2016 Cumartesi 16:06

Yanıtlar

  • ALGORİTMA: Hedefe ulaşmada izlenen yol ve yöntemler bütünü.

    var b = 15; //başlangıç
    var t= 8; //toplam basamak
    var sayı = (b * (int)Math.Pow(10 , t - 2)) + new Random().Next((int)Math.Pow(10, t - 3),(int)Math.Pow(10, t - 2));


    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com

    • Yanıt Olarak İşaretleyen sevdaca 24 Nisan 2016 Pazar 08:32
    23 Nisan 2016 Cumartesi 17:01
    Moderatör

Tüm Yanıtlar

  • Random rnd = new Random(DateTime.Now.GetHashCode());
    int ilkIki = 15;
    int rastgeleRakam = int.Parse(string.Format("{0}{1}", ilkIki, rnd.Next(10000, 100000)));

    gibi birşey olabilir.

    Not: Bildiğim kadarıyla rastgele sayı üretimlerinde şu rakamla başlasın diye belirleyemiyorsun. 

    • Düzenleyen Olcay GUZEL 23 Nisan 2016 Cumartesi 16:18
    23 Nisan 2016 Cumartesi 16:17
  • Başlangıç rakamını stringte  tutup string + rastgelesayı.tosigrig diye halledebilrim benim tek derdim 8 basamaklı olacak şekilde bir sayı elde etmek. 
    23 Nisan 2016 Cumartesi 16:21
  • Bu arada 

    Random rnd = new Random(DateTime.Now.GetHashCode());
    

    tarih koduna göre benzersiz bir sayı üretiyor bu kod bloğu değil mi ?

    23 Nisan 2016 Cumartesi 16:23
  • Başlangıç rakamını string olarak tutma int olarak tut. Yanlışlıkla sayı olmayan bir değer alma riskini ortadan kaldırırsın.
    23 Nisan 2016 Cumartesi 16:23
  • Tamam orasını hallettim peki illaki bu sayı 8 basamak olsun dersem bunu nasıl halledebilirim.
    23 Nisan 2016 Cumartesi 16:25
  • Deleted
    23 Nisan 2016 Cumartesi 16:53
  •  int rastgeleRakam = 15000000+(int)(rnd.NextDouble() * 1000000);

    veya

     int rastgeleRakam =(int)((15+rnd.NextDouble()) * 1000000);



    http://pgnchess.com
    http://dergikapaklari.com




    • Düzenleyen Halil TAŞ 23 Nisan 2016 Cumartesi 17:39
    23 Nisan 2016 Cumartesi 16:56
  • ALGORİTMA: Hedefe ulaşmada izlenen yol ve yöntemler bütünü.

    var b = 15; //başlangıç
    var t= 8; //toplam basamak
    var sayı = (b * (int)Math.Pow(10 , t - 2)) + new Random().Next((int)Math.Pow(10, t - 3),(int)Math.Pow(10, t - 2));


    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com

    • Yanıt Olarak İşaretleyen sevdaca 24 Nisan 2016 Pazar 08:32
    23 Nisan 2016 Cumartesi 17:01
    Moderatör
  • ALGORİTMA: Hedefe ulaşmada izlenen yol ve yöntemler bütünü.

    var b = 15; //başlangıç
    var t= 8; //toplam basamak
    var sayı = (b * (int)Math.Pow(10 , t - 2)) + new Random().Next((int)Math.Pow(10, t - 3),(int)Math.Pow(10, t - 2));


    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com

    Hocam burada oluşacak tüm sayılar biribirinden benzersiz olurmu  + 
    new Random(DateTime.Now.GetHashCode() şeklinde kullanabilirmiyiz
    24 Nisan 2016 Pazar 08:32
  • Referenas tipler ile value tipler de farklı davranır.  Value tiplerde değişkenin değerini referans tiplerde üretilen hash değerini verir.

                int a = 1212;
                string b = "1212";
                Console.WriteLine("A : " + a.GetHashCode());
                Console.WriteLine("B : " + b.GetHashCode());
    

    Çıktı

    A : 1212
    B : -1932604476
    24 Nisan 2016 Pazar 08:41

  • Hocam burada oluşacak tüm sayılar biribirinden benzersiz olurmu  + 
    new Random(DateTime.Now.GetHashCode() şeklinde kullanabilirmiyiz

    Benzersiz derken basamaklardaki sayılar mı? yoksa üretilen sayılarmı? Üretilen sayıların düşük te olsa aynı çıkma ihtimali var. Random'a seed vermek bunu değiştirmez.

    Benzersiz rastgele sayı nerden lazım oldu sana onu açarsan belki başka fikirler verilebilir.


    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com

    24 Nisan 2016 Pazar 09:16
    Moderatör
  • Hocam şöyleki bir belge numarası oluşturmak istiyorum. Ve bu belge numarası her kayıt için farklı olsun istiyorum. sql üzerinde bir fonksiyon oluşturup var olan kayıt sayısını aldım. başlangıç değerini ve satır basamak değeri içinde yine db de bir tablo oluşturdum. Sonuç olarak bunların geri dönüşümünde sıralı bir sayı elde ettim.

    Örn.

    Başlangıç Rakamı : 15

    Basamak Uzunluğu : 10 

    Kayıt Sayısı 2

    üretiler sayılar 15-0000000001,15-0000000002 +++ gidiyor

    Ama ben sıralı bir sayı değilde hepsi biribirinden farklı olmak kaydı ile 15-NNNNNNN şeklinde bir değer elde etmek istiyorum.

    Umarım doğru anlatabilmişimdir.

    24 Nisan 2016 Pazar 12:30
  • O zaman sıralı yap yine ama XOR'la random'dur var mı yok mu uğraşmazsın.

    //@önay 'ın kodunda sadece sağ tarafı değiştireceksin. 

    var b = 15; //başlangıç
    var t= 8; //toplam basamak
    var x = 123541; // 8 - 2 = 6 basamaklı kafana göre bir şey lazım buraya 
    var sira = 45920; // herkes 1 er 1 er artacak aslında
    var sayı = (b * (int)Math.Pow(10 , t - 2)) + (sira ^ x);
    //15086517





    24 Nisan 2016 Pazar 13:46