บางครั้งเรากำลังเขียนโปรแกรมบางสคริปต์ใน ทุบตี …. และเราต้องการ (ด้วยเหตุผลบางประการ) เพื่อสร้างตัวเลขสุ่ม
เพื่อให้คุณสามารถตั้งโปรแกรมแอปพลิเคชันทั้งหมด (หรือฟังก์ชัน ... ) ได้ แต่ ... สงสัยระบบของเราได้ทำไปแล้ว😀
ในเทอร์มินัลพิมพ์ดังต่อไปนี้แล้วกด [ป้อน]:
ก้อง $ สุ่ม
... ตัวเลขจะปรากฏขึ้นพวกเขาทำสิ่งเดียวกันอีกครั้งและอีกหมายเลขหนึ่งจะปรากฏขึ้นเรื่อย ๆ 🙂
มันแสดงให้คุณเห็นตัวเลขสุ่ม (ใด ๆ ) ระหว่าง 0 ถึง 32768 (จำนวนเต็มนั่นคือไม่มีเครื่องหมายจุลภาค).
หากคุณต้องการให้เป็นตัวเลขสุ่ม แต่อยู่ระหว่าง 0 ถึง ... สมมติว่า 100 คุณสามารถใส่ขีด จำกัด นั้นได้😀
เสียงสะท้อน $ (($ RANDOM% 100))
เช่นเดียวกันอีกตัวอย่าง ... ถ้าคุณต้องการให้เป็นตัวเลขระหว่าง 0 ถึง 29 มันจะเป็น:
เสียงสะท้อน $ (($ RANDOM% 29))
มันไม่เข้าใจ? 😀
หากพวกเขาจะใช้มันในสคริปต์ทุบตีที่พวกเขากำลังทำเพื่อกำหนดค่าที่สร้างขึ้น (ตัวเลขสุ่ม) ให้กับตัวแปรมันจะเป็น:
VARIABLE = `echo $ (($ RANDOM))"
และนี่คือทั้งหมดฉันไม่รู้เกี่ยวกับคุณ ... แต่ฉันรู้ว่ามันจะมีประโยชน์สำหรับฉันในบางจุดฮ่า ๆ ๆ
ความนับถือ
ฉันได้ทำการทดสอบแล้วและส่งคืนตัวเลข 4 หลักเท่านั้นจะทำให้ใหญ่ขึ้นได้อย่างไร
เคล็ดลับที่น่าสนใจมากขอบคุณ
ส่งคืนตัวเลขระหว่าง 0 ถึง 32768 ฉันไม่สามารถรับตัวเลขที่ใหญ่กว่าได้
และสามารถสร้าง exadecimals ได้ไหม ????
VARIABLE = `echo $ (($ RANDOM))"
ใช้งานได้ แต่ไม่เหมาะสมด้วยเหตุผลง่ายๆที่ว่า RANDOM เป็นตัวแปรและคุณสามารถทำได้:
ตัวแปร = $ RANDOM
เท่านี้เอง! อย่าเรียกใช้ echo ใน terminal aprte (ซึ่งเป็นสิ่งที่คุณกำลังทำอยู่)
ใช่เห็นได้ชัดว่ามันสามารถทำได้เช่นนี้ ... ความแตกต่างเพียงอย่างเดียวคือในภายหลังเพื่อดูตัวเลขที่ตัวแปรรับ (เนื่องจากผู้ใช้ไม่ใช่ผู้คาดเดา) จึงจำเป็นต้องทำเสียงสะท้อน ... และในท้ายที่สุดสิ่งที่ฉันทำที่นี่ก็คือทำเสียงสะท้อน (เพื่อให้ผู้ใช้สามารถเห็นว่าหมายเลขใดถูกนำมา) ตั้งแต่เริ่มต้น
ฉันทำให้ตัวเองเข้าใจไหม? 🙂
อีกวิธีในการสร้างตัวเลขสุ่มแม้ว่าคราวนี้จะเป็นคำสั่งนี้:
วันที่ "+% 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
...
...
...
ฉันคิดว่ามันชัดเจนใช่มั้ย? แน่นอนว่าตัวเลขทางด้านซ้ายจะคล้ายกันมากขึ้นในช่วงเวลาสั้น ๆ และตัวเลขทางด้านขวาจะเป็นแบบ "สุ่ม" มากกว่า
อืม…. ฉันชอบมันฉันมีสคริปต์ขนาดเล็กที่สร้างตัวเลขสุ่มขอบคุณ
ให้บริการ .. และมาก ..
โดยเฉพาะอย่างยิ่งถ้าคุณกำลังเขียนโปรแกรมอินเทอร์เฟซด้วยรหัสผ่านความปลอดภัย ฯลฯ ฯลฯ ฮ่าฮ่า
การป้องกันที่ยอดเยี่ยม
เฮ้
ก่อนอื่นขอแสดงความยินดีกับเว็บไซต์ที่ยอดเยี่ยมนี้ซึ่งฉันติดตามมานาน
และประการที่สองจดบันทึกเล็กน้อยในรายการนี้:
เมื่อการ จำกัด ทำได้ดังนี้:
เสียงสะท้อน $ (($ RANDOM% 10))
จริงๆแล้วสิ่งที่คุณสั่งล่ามก็คือจำนวนที่คุณสร้างขึ้นจะเป็นโมดูลัส% (ส่วนที่เหลือของการหาร) ของจำนวนที่ตามมาเสมอในตัวอย่างนี้คือ 10
จำนวนใด ๆ ที่หารด้วย 10 จะไม่ให้ส่วนที่เหลือที่มากกว่าตัวหารเอง
ปัญหาคือมันจะไม่ให้เลขเหมือนกันเพราะการหารด้วย 0 ไม่ใช่ตรรกะสำหรับล่าม
ซึ่งหมายความว่า echo $ (($ RANDOM% 10) จะให้ผลลัพธ์ระหว่าง 0 ถึง 9 แต่ไม่ถึง 10
วิธีแก้ไขความขัดแย้งนี้คือเพิ่มหนึ่งในขีด จำกัด ของคุณเพื่อให้จำนวนเดียวกันอยู่ในช่วงสุ่ม
เสียงสะท้อน $ (($ RANDOM% 11))
ซึ่งจะให้ผลลัพธ์ระหว่าง 0 ถึง 10
คำอวยพร
สวัสดี ฉันเพิ่งสร้างอะไรแบบนี้ แต่ฉันประสบปัญหา
ฉันต้องการสร้างตัวเลขที่ต่างกัน 6 ตัวจาก 00 ถึง 45 แต่อย่าทำซ้ำ
เสียงสะท้อน $(($RANDOM%46)) $(($RANDOM%46)) $(($RANDOM%46)) $(($RANDOM%46)) $(($RANDOM%46)) $(($ สุ่ม%46))
ตัวอย่าง: 17 33 16 36 45 27