Đôi khi, chúng tôi đang lập trình một số tập lệnh trong Cú đánh …. và chúng ta cần (vì lý do nào đó) để tạo ra một số ngẫu nhiên.
Vì điều đó, bạn có thể lập trình toàn bộ ứng dụng (hoặc chức năng ...) vâng, nhưng ... thật kỳ lạ là hệ thống của chúng tôi đã làm được điều đó 😀
Trong một thiết bị đầu cuối, nhập dòng sau và nhấn [Đi vào]:
echo $ NGẪU NHIÊN
... một số sẽ xuất hiện, họ làm lại điều tương tự và một số khác xuất hiện, v.v. 🙂
Những gì nó làm là hiển thị cho bạn một số ngẫu nhiên (bất kỳ) từ 0 đến 32768 (số nguyên, nghĩa là không có dấu phẩy).
Nếu bạn cần nó là một số ngẫu nhiên, nhưng từ 0 đến ... giả sử 100, bạn có thể đặt giới hạn đó cho nó
echo $ (($ RANDOM% 100))
Tương tự, một ví dụ khác ... nếu bạn muốn nó là một số từ 0 đến 29, nó sẽ là:
echo $ (($ RANDOM% 29))
Nó có được hiểu không? 😀
Nếu họ sử dụng nó trong một tập lệnh bash mà họ đang thực hiện, để gán giá trị được tạo (một số ngẫu nhiên) cho một biến, nó sẽ là:
VARIABLE = `echo $ (($ RANDOM))`
Chà, đây là nó, tôi không biết về bạn ... nhưng tôi biết rằng nó sẽ có ích cho tôi vào một lúc nào đó hahaha.
Liên quan
Chà, tôi đã thử nghiệm nó và nó chỉ trả về một số có 4 chữ số, làm thế nào tôi có thể làm cho nó lớn hơn?
Mẹo rất thú vị, cảm ơn bạn.
Trả về một số từ 0 đến 32768, tôi không thể lấy số lớn hơn.
và nó có thể tạo ra exadecimals ????
VARIABLE = `echo $ (($ RANDOM))`
Điều đó hoạt động nhưng không tối ưu, vì lý do đơn giản là RANDOM là một biến và bạn có thể làm:
biến = $ RANDOM
và đó là nó! không chạy echo trong aprte đầu cuối (đó là những gì bạn đang làm)
Vâng, rõ ràng là nó có thể đạt được như thế này ... sự khác biệt duy nhất là sau này, để xem số mà biến đã lấy (vì người dùng không phải là người đoán), cần phải thực hiện một tiếng vọng ... và cuối cùng, những gì tôi làm ở đây chỉ đơn giản là thực hiện echo (để người dùng thấy số nào được lấy) ngay từ đầu.
Tôi có làm cho mình hiểu không? 🙂
Một cách khác để tạo một số ngẫu nhiên, mặc dù lần này sẽ là lệnh này:
ngày "+% N" | cắt -c 9
Điều đó sẽ cho chúng ta ngày tính bằng nano giây với 9 chữ số. Nếu chúng ta muốn có một chữ số duy nhất, thì bạn đặt "cắt -c 9" (chữ số cuối cùng luôn ngẫu nhiên hơn vì nó là chữ số nhỏ nhất trong số). Nếu chúng ta muốn có 2 hình thì chúng ta đặt "cut - c 8,9". Nếu chúng ta muốn ba số liệu thì "cut -c 7-9" (chúng ta bắt đầu sử dụng dấu gạch ngang).
Điều tồi tệ duy nhất của điều này là nếu chúng ta muốn nhận được nhiều số ngẫu nhiên liên tiếp trong một thời gian ngắn, bởi vì đây là một số ngẫu nhiên dựa trên ngày với thời gian của nó. Đó là, nếu chúng ta thực hiện lệnh for bằng lệnh đó, chúng ta có thể thấy rằng:
$ cho tôi trong `seq 1 1 500`; làm ngày "+% N"; làm xong
...
...
...
308311367
310807595
313273093
315725181
318186139
320671403
323360117
325733353
328335462
330694870
333259893
335858999
338375622
340798446
...
...
...
Tôi nghĩ nó rõ ràng phải không? Tất nhiên, các số liệu bên trái giống nhau hơn trong một khoảng thời gian ngắn, và các số liệu bên phải “ngẫu nhiên” hơn.
ừm…. Tôi thích nó, tôi có một tập lệnh nhỏ được vẽ để tạo ra các số ngẫu nhiên, cảm ơn.
Nó phục vụ .. và rất nhiều ..
đặc biệt nếu bạn đang lập trình một giao diện trong bash với mật khẩu, bảo mật, v.v., v.v., v.v. haha.
Tuyệt vời.
Hey.
Đầu tiên, tất nhiên xin chúc mừng trang web xuất sắc này mà tôi đã theo dõi từ rất lâu.
Và thứ hai, hãy ghi chú nhỏ vào mục này:
Khi giới hạn được thực hiện như thế này:
echo $ (($ RANDOM% 10))
Trên thực tế, những gì bạn ra lệnh cho trình thông dịch là số được tạo của bạn luôn là mô-đun% (phần còn lại của phép chia) của số tiếp theo, trong ví dụ này là 10.
Bất kỳ số nào bị chia cho 10 sẽ không bao giờ cho phần dư lớn hơn số chia.
Vấn đề là nó cũng sẽ không cho cùng một số, bởi vì phép chia cho 0 là không logic đối với trình thông dịch.
Điều này có nghĩa là echo $ (($ RANDOM% 10) sẽ cho kết quả từ 0 đến 9, nhưng không bao giờ là 10.
Giải pháp cho xung đột này là thêm một số vào giới hạn của bạn, để cùng một số nằm trong phạm vi ngẫu nhiên.
echo $ (($ RANDOM% 11))
Điều này sẽ cho kết quả từ 0 đến 10.
Một lời chào.
Xin chào, tôi chỉ đang xây dựng một cái gì đó như thế này, nhưng tôi đã gặp sự cố.
Tôi muốn tạo 6 số khác nhau từ 00 đến 45 nhưng không lặp lại chúng.
echo $ (($ NGẪU NHIÊN% 46)) $ (($ NGẪU NHIÊN% 46)) $ (($ NGẪU NHIÊN% 46)) $ (($ NGẪU NHIÊN% 46)) $ (($ NGẪU NHIÊN% 46)) $ (($ NGẪU NHIÊN% 46))
VÍ DỤ: 17 33 16 36 45 27