none
Rastgele 10 basamaklı sayı üretme RRS feed

  • Soru

  • Merhaba,

    öncelikle böyle basit bir sorun sebebi ile sosyalde kalabalık oluşturduğum için özür dileyerek sorunumu anlatıyorum.

       Random rastgele = new Random();
       int salt =rastgele.Next(1000000000, 9999999999);

    şeklide 10 basamaklı rastgele bir sayı elde etmek istiyorum fakat int veri tipi 2.147.483.647 ye kadar sayı alabildiği için "2 bağımsız değişkeni 'long' ögesinden 'int' ögesine dönüştürülemiyor" şeklinde hata alıyorum. salt değişkeninin veri tipini long yaptığımda yine aynı şekilde yanıt alıyorum. 10 basamaklı rastgele sayı üretmek için nasıl bir kod satırı kullanabilirim? 

    Şimdiden teşekkürler.

    15 Nisan 2020 Çarşamba 09:11

Yanıtlar

  • Selamlar

       public static long LongRandom(long min, long max, Random rand)
            {
                byte[] buf = new byte[8];
                rand.NextBytes(buf);
                long longRand = BitConverter.ToInt64(buf, 0);
    
                return (Math.Abs(longRand % (max - min)) + min);
            }

      Console.WriteLine( LongRandom(1000000000, 10000000000, new Random()));


    Yanıtları yardımcı olurlarsa yanıt olarak işaretlemeyi ve yardım sağlamazlarsa işaretlerini kaldırmayı unutmayın; bu, aynı veya benzer soruna çözüm arayan diğerlerine yardımcı olacaktır.

    • Yanıt Olarak Öneren mesutyilmaz 15 Nisan 2020 Çarşamba 09:57
    • Yanıt Olarak İşaretleyen Enis Güneş 15 Nisan 2020 Çarşamba 20:10
    15 Nisan 2020 Çarşamba 09:35

Tüm Yanıtlar

  • Selamlar

       public static long LongRandom(long min, long max, Random rand)
            {
                byte[] buf = new byte[8];
                rand.NextBytes(buf);
                long longRand = BitConverter.ToInt64(buf, 0);
    
                return (Math.Abs(longRand % (max - min)) + min);
            }

      Console.WriteLine( LongRandom(1000000000, 10000000000, new Random()));


    Yanıtları yardımcı olurlarsa yanıt olarak işaretlemeyi ve yardım sağlamazlarsa işaretlerini kaldırmayı unutmayın; bu, aynı veya benzer soruna çözüm arayan diğerlerine yardımcı olacaktır.

    • Yanıt Olarak Öneren mesutyilmaz 15 Nisan 2020 Çarşamba 09:57
    • Yanıt Olarak İşaretleyen Enis Güneş 15 Nisan 2020 Çarşamba 20:10
    15 Nisan 2020 Çarşamba 09:35
  • 10 basamaklı rastgele sayıyı nerede kullanıyorsunuz? Pek kullanışlı bişey görünmüyor? Benzersiz olması gerekiyor mu? Aritmetik işlem yapacakmısınız?

    string.Concat(Enumerable.Range(1,10).Select(p => "0123456789".OrderBy(q=> Guid.NewGuid()).First()))


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

    • Yanıt Olarak Öneren CetinBasoz 15 Nisan 2020 Çarşamba 12:25
    15 Nisan 2020 Çarşamba 09:50
    Moderatör
  • Öncelikle küçük bir bilgi. Next in ikili kullanımında ikinci sayıya kadar üretim yapılır yani o sayı hiç üretilmez. Üretilsin istiyorsanız 1 fazlasını yazmalısınız.

    Benim cevabım şöyle olurdu

    var r = new Random();
    var s = (long)(r.NextDouble() * 90000_00000 + 10000_00000);

    Fakat, kodda "salt" yazmışsınız bu hashing ile ilgili bir konu ise ihtiyacınız olan yöntem bu değil.


    www.cihanyakar.com

    • Yanıt Olarak Öneren CetinBasoz 15 Nisan 2020 Çarşamba 12:25
    15 Nisan 2020 Çarşamba 09:54
    Moderatör
  • Arkadaslar cevabini vermis zaten. 

    Salt icin ise byte[]'a ihtiyacınız var:

    void Main()
    {
    	byte[] key = new byte[10];
    	RandomNumberGenerator.Create().GetBytes(key);
    	Console.WriteLine(BitConverter.ToString(key));
    }




    How to create a Minimal, Reproducible Example
    The way to Go.
    World's most advanced open source (object-) relational Database.
    Flutter (for mobile, for web & desktop.


    Not: Temelin geri zekalı arkadaşı Idris bu mesaja da atlayıp ne kadar aptal oldugunu bir kez daha belgeleyebilir. Kendisinin tek marifeti beni takip edip, neden her soruya cevap verdiğimi, yardım etmeye calistigimi sorgulamaktır. Bu beyinsiz zavallıya, aptal olduğunu hatırlatmayı unutmayınız.

    15 Nisan 2020 Çarşamba 12:31