(Bash): Rastgele sayı üretme komutu

Bazen bir komut dosyası programlıyoruz Cümbüş …. ve (bazı nedenlerden dolayı) rastgele bir sayı üretmemiz gerekiyor.

Bunun için tüm bir uygulamayı (veya işlevi ...) programlayabilirsiniz, evet, ancak ... ilginç bir şekilde sistemimiz bunu zaten yaptı 😀

Bir terminalde aşağıdakileri yazın ve [Girmek]:

echo $ RASGELE

... bir sayı görünecek, aynı şeyi tekrar yapacaklar ve başka bir numara görünecek ve bu böyle devam edecek 🙂

Yaptığı şey, size 0 ile 32768 (herhangi biri) arasında rastgele bir sayı göstermektir.tamsayı, yani virgül olmadan).

Rastgele bir sayı olmasına ihtiyacınız varsa, ancak 0 ile ... diyelim ki 100, üzerine bu limiti koyabilirsiniz 😀

echo $ (($ RASGELE% 100))

Aynı, başka bir örnek ... 0 ile 29 arasında bir sayı olmasını istiyorsanız, şöyle olur:

echo $ (($ RASGELE% 29))

Anlaşılmadı mı? 😀

Yaptıkları bir bash betiğinde kullanacaklarsa, üretilen değeri (rastgele bir sayı) bir değişkene atamak için:

DEĞİŞKEN = `echo $ (($ RASGELE))`

Şey, işte bu, seni bilmiyorum ... ama bir noktada bana faydalı olacağını biliyorum hahaha.

selamlar


Yorumunuzu bırakın

E-posta hesabınız yayınlanmayacak. Gerekli alanlar ile işaretlenmiştir *

*

*

  1. Verilerden sorumlu: Miguel Ángel Gatón
  2. Verilerin amacı: Kontrol SPAM, yorum yönetimi.
  3. Meşruiyet: Onayınız
  4. Verilerin iletilmesi: Veriler, yasal zorunluluk dışında üçüncü kişilere iletilmeyecektir.
  5. Veri depolama: Occentus Networks (AB) tarafından barındırılan veritabanı
  6. Haklar: Bilgilerinizi istediğiniz zaman sınırlayabilir, kurtarabilir ve silebilirsiniz.

  1.   Oscar dijo

    Eh, test ediyordum ve sadece 4 basamaklı bir sayı döndürüyor, onu nasıl büyütebilirim?
    Çok ilginç bir ipucu, teşekkürler.

    1.    KZKG ^ Gaara dijo

      0 ile 32768 arasında bir sayı döndürür, daha büyük sayılar alamadım.

  2.   josue dijo

    ve exadecimals oluşturabilir mi ????

  3.   kuzgun dijo

    DEĞİŞKEN = `echo $ (($ RASGELE))`

    RASGELE'nin bir değişken olması ve şunları yapabilmeniz için basit bir nedenden dolayı bu işe yarar, ancak optimal değildir:
    değişken = $ RASGELE
    ve bu kadar! echo'yu bir terminal aprte'de çalıştırmayın (yaptığınız şey budur)

    1.    KZKG ^ Gaara dijo

      Evet, tabii ki bu şekilde başarılabilir… tek fark, daha sonra değişkenin aldığı sayıyı görmek için (kullanıcı bir tahminci olmadığı için) bir yankı yapmak gerekecek…. ve sonunda, burada yaptığım şey basitçe yankıyı yapmak (böylece kullanıcı hangi sayının alındığını görebilsin) baştan.

      Kendimi anlamalı mıyım? 🙂

  4.   Wuilmer bolivarı dijo

    Rastgele bir sayı oluşturmanın başka bir yolu, bu sefer şu komut olsa da:

    tarih "+% N" | kesim -c 9

    Bu bize tarihi nanosaniye cinsinden 9 basamaklı verir. Tek bir rakam istiyorsak, "cut -c 9" u koyarsınız (son rakam her zaman daha rastgeledir çünkü sayının en küçüğüdür). Eğer 2 rakam istiyorsak "cut - c 8,9" koyarız. Üç rakam istiyorsak "cut -c 7-9" (kısa çizgiyi kullanmaya başlarız).

    Bununla ilgili tek kötü şey, kısa sürede arka arkaya çok sayıda rastgele sayı elde etmek istiyorsak, çünkü bu, zamanıyla bir tarihe dayalı rastgele bir sayıdır. Yani, bu komutla bir for yaparsak şunu görebiliriz:

    $ i için "seq 1 1 500"; tarih "+% N"; bitti

    ...
    ...
    ...

    308311367
    310807595
    313273093
    315725181
    318186139
    320671403
    323360117
    325733353
    328335462
    330694870
    333259893
    335858999
    338375622
    340798446

    ...
    ...
    ...

    Sanırım açık değil mi? Elbette soldaki rakamlar kısa bir zaman diliminde birbirine daha çok benziyor ve sağdakiler daha “rastgele”.

  5.   siyah göz dijo

    mmm…. Hoşuma gitti, bir mini betiğim var, rastgele sayılar oluşturmak için boyanmış, teşekkürler.

  6.   G. dijo

    Hizmet ediyor .. ve çok ..
    özellikle parola, güvenlik vb. ile bash'ta bir arayüz programlıyorsanız, haha.
    Mükemmel bir aprote.

  7.   José Antonio Bent'i Takip Etti dijo

    Merhaba.
    Öncelikle uzun zamandır takip ettiğim bu mükemmel web sitesi için tabii ki tebrikler.
    İkincisi, bu girişe küçük bir not alın:
    Sınırlama şu şekilde yapıldığında:

    echo $ (($ RASGELE% 10))

    Aslında, yorumlayıcıyı sipariş ettiğiniz şey, üretilen sayınızın her zaman sonraki sayının modülü% (bölümün geri kalanı) olmasıdır, bu örnekte, 10.
    10'a bölünen herhangi bir sayı asla kalan olarak bölenin kendisinden daha büyük bir şey vermeyecektir.
    Sorun, aynı sayıyı da vermemesidir, çünkü 0'a bölme yorumlayıcı için mantıklı değildir.

    Bu, echo $ (($ RANDOM% 10) 'un 0 ile 9 arasında sonuçlar vereceği, ancak asla 10 olmayacağı anlamına gelir.
    Bu çelişkinin çözümü, sınırınıza bir tane eklemektir, böylece aynı sayı rastgele aralığa düşer.

    echo $ (($ RASGELE% 11))

    Bu, 0 ile 10 arasında sonuçlar verecektir.

    Bir tebrik.

  8.   arkadaş dijo

    Merhaba, ben sadece böyle bir şey inşa ediyordum ama bir sorunla karşılaştım.

    6'dan 00'e kadar 45 farklı sayı yapmak istiyorum ama onları tekrarlamak istemiyorum.

    echo $(($RANDOM%46)) $(($RANDOM%46)) $(($RANDOM%46)) $(($RANDOM%46)) $(($RANDOM%46)) $(($ RANDOM%46))

    ÖRNEK: 17 33 16 36 45 27