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
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.
0 ile 32768 arasında bir sayı döndürür, daha büyük sayılar alamadım.
ve exadecimals oluşturabilir mi ????
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)
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? 🙂
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”.
mmm…. Hoşuma gitti, bir mini betiğim var, rastgele sayılar oluşturmak için boyanmış, teşekkürler.
Hizmet ediyor .. ve çok ..
özellikle parola, güvenlik vb. ile bash'ta bir arayüz programlıyorsanız, haha.
Mükemmel bir aprote.
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.
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