(Bash): คำสั่งสร้างหมายเลขสุ่ม

บางครั้งเรากำลังเขียนโปรแกรมบางสคริปต์ใน ทุบตี …. และเราต้องการ (ด้วยเหตุผลบางประการ) เพื่อสร้างตัวเลขสุ่ม

เพื่อให้คุณสามารถตั้งโปรแกรมแอปพลิเคชันทั้งหมด (หรือฟังก์ชัน ... ) ได้ แต่ ... สงสัยระบบของเราได้ทำไปแล้ว😀

ในเทอร์มินัลพิมพ์ดังต่อไปนี้แล้วกด [ป้อน]:

ก้อง $ สุ่ม

... ตัวเลขจะปรากฏขึ้นพวกเขาทำสิ่งเดียวกันอีกครั้งและอีกหมายเลขหนึ่งจะปรากฏขึ้นเรื่อย ๆ 🙂

มันแสดงให้คุณเห็นตัวเลขสุ่ม (ใด ๆ ) ระหว่าง 0 ถึง 32768 (จำนวนเต็มนั่นคือไม่มีเครื่องหมายจุลภาค).

หากคุณต้องการให้เป็นตัวเลขสุ่ม แต่อยู่ระหว่าง 0 ถึง ... สมมติว่า 100 คุณสามารถใส่ขีด จำกัด นั้นได้😀

เสียงสะท้อน $ (($ RANDOM% 100))

เช่นเดียวกันอีกตัวอย่าง ... ถ้าคุณต้องการให้เป็นตัวเลขระหว่าง 0 ถึง 29 มันจะเป็น:

เสียงสะท้อน $ (($ RANDOM% 29))

มันไม่เข้าใจ? 😀

หากพวกเขาจะใช้มันในสคริปต์ทุบตีที่พวกเขากำลังทำเพื่อกำหนดค่าที่สร้างขึ้น (ตัวเลขสุ่ม) ให้กับตัวแปรมันจะเป็น:

VARIABLE = `echo $ (($ RANDOM))"

และนี่คือทั้งหมดฉันไม่รู้เกี่ยวกับคุณ ... แต่ฉันรู้ว่ามันจะมีประโยชน์สำหรับฉันในบางจุดฮ่า ๆ ๆ

ความนับถือ


แสดงความคิดเห็นของคุณ

อีเมล์ของคุณจะไม่ถูกเผยแพร่ ช่องที่ต้องการถูกทำเครื่องหมายด้วย *

*

*

  1. ผู้รับผิดชอบข้อมูล: Miguel ÁngelGatón
  2. วัตถุประสงค์ของข้อมูล: ควบคุมสแปมการจัดการความคิดเห็น
  3. ถูกต้องตามกฎหมาย: ความยินยอมของคุณ
  4. การสื่อสารข้อมูล: ข้อมูลจะไม่ถูกสื่อสารไปยังบุคคลที่สามยกเว้นตามข้อผูกพันทางกฎหมาย
  5. การจัดเก็บข้อมูล: ฐานข้อมูลที่โฮสต์โดย Occentus Networks (EU)
  6. สิทธิ์: คุณสามารถ จำกัด กู้คืนและลบข้อมูลของคุณได้ตลอดเวลา

  1.   ออสการ์ dijo

    ฉันได้ทำการทดสอบแล้วและส่งคืนตัวเลข 4 หลักเท่านั้นจะทำให้ใหญ่ขึ้นได้อย่างไร
    เคล็ดลับที่น่าสนใจมากขอบคุณ

    1.    KZKG ^ กาอาระ dijo

      ส่งคืนตัวเลขระหว่าง 0 ถึง 32768 ฉันไม่สามารถรับตัวเลขที่ใหญ่กว่าได้

  2.   josue dijo

    และสามารถสร้าง exadecimals ได้ไหม ????

  3.   ดำขลับ dijo

    VARIABLE = `echo $ (($ RANDOM))"

    ใช้งานได้ แต่ไม่เหมาะสมด้วยเหตุผลง่ายๆที่ว่า RANDOM เป็นตัวแปรและคุณสามารถทำได้:
    ตัวแปร = $ RANDOM
    เท่านี้เอง! อย่าเรียกใช้ echo ใน terminal aprte (ซึ่งเป็นสิ่งที่คุณกำลังทำอยู่)

    1.    KZKG ^ กาอาระ dijo

      ใช่เห็นได้ชัดว่ามันสามารถทำได้เช่นนี้ ... ความแตกต่างเพียงอย่างเดียวคือในภายหลังเพื่อดูตัวเลขที่ตัวแปรรับ (เนื่องจากผู้ใช้ไม่ใช่ผู้คาดเดา) จึงจำเป็นต้องทำเสียงสะท้อน ... และในท้ายที่สุดสิ่งที่ฉันทำที่นี่ก็คือทำเสียงสะท้อน (เพื่อให้ผู้ใช้สามารถเห็นว่าหมายเลขใดถูกนำมา) ตั้งแต่เริ่มต้น

      ฉันทำให้ตัวเองเข้าใจไหม? 🙂

  4.   Wuilmer โบลิวาร์ dijo

    อีกวิธีในการสร้างตัวเลขสุ่มแม้ว่าคราวนี้จะเป็นคำสั่งนี้:

    วันที่ "+% N" | ตัด -c 9

    นั่นจะทำให้เราได้วันที่ในหน่วยนาโนวินาทีโดยมี 9 หลัก ถ้าเราต้องการรูปเดียวให้ใส่ "ตัด -c 9" (รูปสุดท้ายจะสุ่มมากกว่าเสมอเพราะเป็นตัวเลขที่เล็กที่สุด) ถ้าเราต้องการ 2 ตัวเลขเราก็ใส่ "ตัด - ค 8,9" หากเราต้องการตัวเลขสามตัวให้ "ตัด -c 7-9" (เราเริ่มใช้ยัติภังค์)

    สิ่งเดียวที่ไม่ดีเกี่ยวกับเรื่องนี้คือถ้าเราต้องการสุ่มตัวเลขหลาย ๆ ตัวติดต่อกันในเวลาอันสั้นเพราะนี่คือตัวเลขสุ่มตามวันที่พร้อมเวลา นั่นคือถ้าเราสร้าง for ด้วยคำสั่งนั้นเราจะเห็นว่า:

    $ สำหรับฉันใน `seq 1 1 500`; ทำวันที่ "+% N"; เสร็จแล้ว

    ...
    ...
    ...

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

    ...
    ...
    ...

    ฉันคิดว่ามันชัดเจนใช่มั้ย? แน่นอนว่าตัวเลขทางด้านซ้ายจะคล้ายกันมากขึ้นในช่วงเวลาสั้น ๆ และตัวเลขทางด้านขวาจะเป็นแบบ "สุ่ม" มากกว่า

  5.   ตาสีดำ dijo

    อืม…. ฉันชอบมันฉันมีสคริปต์ขนาดเล็กที่สร้างตัวเลขสุ่มขอบคุณ

  6.   G. dijo

    ให้บริการ .. และมาก ..
    โดยเฉพาะอย่างยิ่งถ้าคุณกำลังเขียนโปรแกรมอินเทอร์เฟซด้วยรหัสผ่านความปลอดภัย ฯลฯ ฯลฯ ฮ่าฮ่า
    การป้องกันที่ยอดเยี่ยม

  7.   José Antonio ติดตาม Bent dijo

    เฮ้
    ก่อนอื่นขอแสดงความยินดีกับเว็บไซต์ที่ยอดเยี่ยมนี้ซึ่งฉันติดตามมานาน
    และประการที่สองจดบันทึกเล็กน้อยในรายการนี้:
    เมื่อการ จำกัด ทำได้ดังนี้:

    เสียงสะท้อน $ (($ RANDOM% 10))

    จริงๆแล้วสิ่งที่คุณสั่งล่ามก็คือจำนวนที่คุณสร้างขึ้นจะเป็นโมดูลัส% (ส่วนที่เหลือของการหาร) ของจำนวนที่ตามมาเสมอในตัวอย่างนี้คือ 10
    จำนวนใด ๆ ที่หารด้วย 10 จะไม่ให้ส่วนที่เหลือที่มากกว่าตัวหารเอง
    ปัญหาคือมันจะไม่ให้เลขเหมือนกันเพราะการหารด้วย 0 ไม่ใช่ตรรกะสำหรับล่าม

    ซึ่งหมายความว่า echo $ (($ RANDOM% 10) จะให้ผลลัพธ์ระหว่าง 0 ถึง 9 แต่ไม่ถึง 10
    วิธีแก้ไขความขัดแย้งนี้คือเพิ่มหนึ่งในขีด จำกัด ของคุณเพื่อให้จำนวนเดียวกันอยู่ในช่วงสุ่ม

    เสียงสะท้อน $ (($ RANDOM% 11))

    ซึ่งจะให้ผลลัพธ์ระหว่าง 0 ถึง 10

    คำอวยพร

  8.   amiel dijo

    สวัสดี ฉันเพิ่งสร้างอะไรแบบนี้ แต่ฉันประสบปัญหา

    ฉันต้องการสร้างตัวเลขที่ต่างกัน 6 ตัวจาก 00 ถึง 45 แต่อย่าทำซ้ำ

    เสียงสะท้อน $(($RANDOM%46)) $(($RANDOM%46)) $(($RANDOM%46)) $(($RANDOM%46)) $(($RANDOM%46)) $(($ สุ่ม%46))

    ตัวอย่าง: 17 33 16 36 45 27