(Bash): Lệnh tạo số ngẫu nhiên

Đô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


Để lại bình luận của bạn

địa chỉ email của bạn sẽ không được công bố. Các trường bắt buộc được đánh dấu bằng *

*

*

  1. Chịu trách nhiệm về dữ liệu: Miguel Ángel Gatón
  2. Mục đích của dữ liệu: Kiểm soát SPAM, quản lý bình luận.
  3. Hợp pháp: Sự đồng ý của bạn
  4. Truyền thông dữ liệu: Dữ liệu sẽ không được thông báo cho các bên thứ ba trừ khi có nghĩa vụ pháp lý.
  5. Lưu trữ dữ liệu: Cơ sở dữ liệu do Occentus Networks (EU) lưu trữ
  6. Quyền: Bất cứ lúc nào bạn có thể giới hạn, khôi phục và xóa thông tin của mình.

  1.   Oscar dijo

    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.

    1.    KZKG ^ Gaara dijo

      Trả về một số từ 0 đến 32768, tôi không thể lấy số lớn hơn.

  2.   Josue dijo

    và nó có thể tạo ra exadecimals ????

  3.   con quạ dijo

    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)

    1.    KZKG ^ Gaara dijo

      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? 🙂

  4.   Wuilmer bolivar dijo

    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.

  5.   mắt đen dijo

    ừ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.

  6.   G. dijo

    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.

  7.   José Antonio đã theo dõi Bent dijo

    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.

  8.   amiel dijo

    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