ზოგჯერ, ჩვენ ვპროგრამირებთ ზოგიერთ სკრიპტს Bash .... და ჩვენ გვჭირდება (რატომღაც) რაიმე შემთხვევითი რიცხვის გამომუშავება.
ამისათვის შეგიძლიათ დააპროგრამოთ მთელი პროგრამა (ან ფუნქცია ...) დიახ, მაგრამ ... საინტერესოა, რომ ჩვენმა სისტემამ ეს უკვე გააკეთა
ტერმინალში აკრიფეთ შემდეგი და დააჭირეთ ღილაკს [შეიყვანეთ]:
ექო $ RANDOM
... გამოჩნდება რიცხვი, ისინი ისევ იმავეს აკეთებენ და ჩნდება სხვა ნომერი და ა.შ. on
რას ნიშნავს არის გაჩვენოთ შემთხვევითი რიცხვი (ნებისმიერი) 0-დან 32768-მდე (მთელი რიცხვი, ანუ მძიმის გარეშე).
თუ გჭირდებათ რომ ეს იყოს შემთხვევითი რიცხვი, მაგრამ 0 – დან ... და ვთქვათ 100 – ზე, შეგიძლიათ ეს ზღვარი დაამატოთ
echo $ (($ RANDOM% 100))
იგივე, კიდევ ერთი მაგალითი ... თუ გსურთ ეს იყოს რიცხვი 0-დან 29-მდე, ეს იქნებოდა:
echo $ (($ RANDOM% 29))
გასაგებია არა? 😀
თუ ისინი გამოიყენებენ მას bash სკრიპტში, რომელსაც აკეთებენ, შექმნილ მნიშვნელობას (შემთხვევითი რიცხვი) მიანიჭონ ცვლადს:
ცვალებადი = `ექო $ (($ RANDOM))”
და ესე იგი, მე არ ვიცი შენი შესახებ ... მაგრამ მე ვიცი რომ ის ჩემთვის სასარგებლო იქნება გარკვეულ მომენტში ჰაჰაჰა.
დაკავშირებით
10 კომენტარი დატოვე შენი
ისე, მე ვამოწმებდი მას და ის მხოლოდ 4 ციფრიან აბრუნებს, როგორ გავზარდო?
ძალიან საინტერესო რჩევა, გმადლობთ.
აბრუნებს რიცხვს 0-დან 32768-მდე, მე უფრო დიდი რიცხვების მიღება ვერ შევძელი.
და შეიძლება თუ არა იგი ექსადესიმალების წარმოქმნა ????
ცვალებადი = `ექო $ (($ RANDOM))”
ეს მუშაობს, მაგრამ არ არის ოპტიმალური, იმ მარტივი მიზეზის გამო, რომ RANDOM არის ცვლადი და ამის გაკეთება შეგიძლიათ:
ცვლადი = $ RANDOM
და ეს არის ის! არ გაუშვა ექო ტერმინალში (რასაც აკეთებ)
დიახ, ცხადია, ამის მიღწევა შეიძლება… ერთადერთი განსხვავება ისაა, რომ მოგვიანებით, ცვლადის აყვანილი რიცხვის სანახავად (რადგან მომხმარებელი არ არის გამოსაცნობი), საჭიროა ექოს გაკეთება. და ბოლოს, რასაც მე ვაკეთებ აქ არის უბრალოდ ექოს გაკეთება (ასე რომ მომხმარებელმა დაინახოს რა რიცხვია აღებული) თავიდანვე.
საკუთარ თავს გავაგებინო? 🙂
შემთხვევითი რიცხვის წარმოქმნის კიდევ ერთი გზა, თუმცა ამჯერად ეს იქნება ეს ბრძანება:
თარიღი "+% N" | დაჭრილი -c 9
ეს მოგვცემს თარიღს ნანოწამებში 9 ციფრით. თუ ერთი ფიგურა გვინდა, მაშინ დააყენე "cut -c 9" (ბოლო ფიგურა ყოველთვის უფრო შემთხვევითია, რადგან ის რიცხვის ყველაზე პატარაა). თუ გვსურს 2 ფიგურა, მაშინ დავსვამთ "cut - c 8,9". თუ სამი ფიგურა გვინდა, მაშინ "მოჭრა -c 7-9" (ვიწყებთ დეფისის გამოყენებას).
ამაში ერთადერთი ცუდი ის არის, თუ გვინდა, რომ მოკლე დროში ზედიზედ ბევრი შემთხვევითი რიცხვი მივიღოთ, რადგან ეს არის შემთხვევითი რიცხვი, რომელიც დაფუძნებულია თარიღზე თავის დროზე. ეს არის ის, რომ თუ ამ ბრძანებით დავიცავთ, დავინახავთ:
$ ამისთვის მე `სექციაში 1 1 500`; თარიღის გაკეთება "+% N"; შესრულებულია
...
...
...
308311367
310807595
313273093
315725181
318186139
320671403
323360117
325733353
328335462
330694870
333259893
335858999
338375622
340798446
...
...
...
მგონი გასაგებია არა? რა თქმა უნდა, მარცხენა ფიგურები უფრო მსგავსია დროის მოკლე დროში, ხოლო მარჯვნივ უფრო "შემთხვევითი".
მმმ მომეწონა, მაქვს მინი სკრიპტი, რომელიც დამრჩა შემთხვევითი რიცხვების გამომუშავებისთვის, მადლობა.
ეს ემსახურება .. და ბევრი ..
განსაკუთრებით, თუ თქვენ პროგრამირებთ ინტერფეისს bash- ში, პაროლით, დაცვით და ა.შ. და ა.შ., და ა.შ. haha.
შესანიშნავი აპროტე.
Hello.
პირველ რიგში, რა თქმა უნდა, გილოცავთ ამ შესანიშნავ ვებსაიტს, რომელსაც დიდი ხნის განმავლობაში მივყვებოდი.
მეორეც, მცირე ჩანაწერი გააკეთეთ ამ ჩანაწერში:
როდესაც ლიმიტი კეთდება ასე:
echo $ (($ RANDOM% 10))
სინამდვილეში, თარჯიმნის შეკვეთა არის ის, რომ თქვენი გამომუშავებული რიცხვი ყოველთვის არის მოდელის% (დაყოფის დარჩენილი ნაწილი) შემდეგი რიცხვისა, ამ მაგალითში 10.
ნებისმიერი რიცხვი, რომელიც გაყოფილია 10 – ზე, არასდროს მისცემს ნარჩენს რაღაც უფრო მეტს, ვიდრე თვით გამყოფი.
პრობლემა ისაა, რომ ის არც იმავე რიცხვს მისცემს, რადგან 0-ზე დაყოფა თარჯიმნისთვის ლოგიკური არ არის.
ეს ნიშნავს, რომ ექო $ (($ RANDOM% 10) იძლევა შედეგებს 0-დან 9-მდე, მაგრამ არასდროს 10-ს.
ამ კონფლიქტის გამოსავალია თქვენი ლიმიტის დამატება, ისე რომ იგივე რიცხვი მოხვდეს შემთხვევითი დიაპაზონის ფარგლებში.
echo $ (($ RANDOM% 11))
ეს მისცემს შედეგებს 0 – დან 10 – მდე.
მისალოცი.
გამარჯობა, ახლახან ვაშენებდი მსგავს რაღაცას, მაგრამ პრობლემა შემექმნა.
მინდა გავაკეთო 6 განსხვავებული რიცხვი 00-დან 45-მდე, მაგრამ არ გავიმეორო.
ექო $(($RANDOM%46)) $(($RANDOM%46)) $(($RANDOM%46)) $(($RANDOM%46)) $(($RANDOM%46)) $(($) შემთხვევითი%46))
მაგ: 17 33 16 36 45 27