รุ่นสุ่มของ seq สำหรับสร้างลำดับของตัวเลข / คำแบบสุ่ม?


10

บางครั้งที่ผ่านมาฉันใช้เครื่องมือคล้าย seq สำหรับการพิมพ์ลำดับของตัวเลขที่สร้างแบบหลอกหลอกไปยัง stdout คุณสามารถระบุช่วงเมล็ดและจำนวนตัวอย่างและอีกมากมาย

ฉันเพิ่งลืมชื่อของเครื่องมือนี้ ใครช่วยฉันออกได้บ้าง

บางทีคุณอาจรู้จักเครื่องมือขั้นสูงที่สนับสนุนการแจกแจงความน่าจะเป็นต่าง ๆ หรือแม้แต่การสร้างลำดับของคำสุ่มภายใต้ตัวอักษรและการกระจายความยาว / อักขระที่แตกต่างกัน

คำตอบ:


11

คุณหมายถึง jot หรือเปล่า

$ jot 
jot: jot - print sequential or random data
usage:  jot [ options ] [ reps [ begin [ end [ s ] ] ] ]
Options:
    -r      random data
    -c      character data
    -n      no final newline
    -b word     repeated word
    -w word     context word
    -s string   data separator
    -p precision    number of characters

หากคุณใช้ Ubuntu แพคเกจคือ athena-jot ตัวอย่างง่ายๆ:

$ jot -r 10 12 27
26
13
22
18
25
12
13
23
15
23

บาย.


ใช่jotคือคำสั่งนั้นขอบคุณ! ฉันขอขอบคุณข้อเสนอแนะเพิ่มเติมของเครื่องมือสร้างลำดับขั้นสูงเพิ่มเติม
maxschlepzig

2

หากคุณไม่รังเกียจที่จะเขียนสคริปต์เล็ก ๆ เพื่อทำสิ่งที่คุณต้องการฉันแนะนำให้ทำในRซึ่งเป็นระบบสถิติโอเพ่นซอร์ส

ยกตัวอย่างเช่นลองพิจารณาดูซับไลน์หนึ่งอันเพื่อรับรายการของ 100 ตัวเลขที่แจกแจงแบบเกาส์:

$ Rscript -e 'write(rnorm(100) * 100 + 100, "", 1)'
234.2903
-25.53289
168.0262
-28.49810
105.0687
85.97355
269.5072
...

มาทำลายมันกันเถอะ

Rคำสั่งมาตรฐานนำคุณเข้าสู่สภาพแวดล้อมการเขียนโปรแกรมแบบโต้ตอบซึ่งไม่เป็นไรหากคุณพยายามหาวิธีทำบางสิ่งด้วยมือหรือสร้างสิ่งที่เพิ่มขึ้นทีละขั้น แต่จากคำถามของคุณดูเหมือนว่าคุณแค่ต้องการรายการตัวเลข เพื่อส่งไปยังโปรแกรมอื่น ดังนั้นเราจึงใช้Rscriptซึ่งทำหน้าที่เหมือนล่ามสคริปต์ Unix แบบดั้งเดิมมากขึ้น: คุณสามารถส่งผ่านชื่อไฟล์ที่มีสคริปต์ R หรือใช้-eแฟล็กมาตรฐานเพื่อส่งผ่านข้อความโปรแกรมทั้งหมดในบรรทัดคำสั่ง

rnorm()เป็นฟังก์ชั่น R เพื่อรับรายการหมายเลขสุ่มด้วยการแจกแจงแบบ "ปกติ" หรือแบบเกาส์เซียน มันต้องใช้พารามิเตอร์สูงสุดสามพารามิเตอร์ซึ่งจำเป็นต้องมีเพียงพารามิเตอร์แรกเท่านั้นจำนวนที่คุณต้องการ เราได้ขอให้ 100 โดยการใช้ค่าเริ่มต้นสำหรับพารามิเตอร์ทางเลือกอีกสองตัวเราได้ค่าเฉลี่ยเป็น 0 และส่วนเบี่ยงเบนมาตรฐานเท่ากับ 1

เลขคณิตหลังจากนั้นแสดงให้เห็นถึงคุณสมบัติที่ยอดเยี่ยมของภาษา R: คุณสามารถคำนวณทางคณิตศาสตร์บนตารางข้อมูลทั้งหมด, เมทริกซ์, ฯลฯ ได้อย่างง่ายดายเช่นเดียวกับค่าสเกลาร์ในภาษาทั่วไปที่มากกว่า ฉันได้คูณค่าที่สร้างทั้งหมดด้วย 100 และบวก 100 เข้ากับพวกเขาเพราะฉันทำได้ เนื่องจาก R เป็นภาษาโปรแกรมเต็มรูปแบบไม่มีข้อ จำกัด ในสิ่งที่คุณสามารถทำได้กับรายการตัวเลขนี้ jotนั่นคือประโยชน์ของการใช้ระบบดังกล่าวแทนที่จะเป็นคำสั่งวัตถุประสงค์คงเหมือน

เราส่งผลลัพธ์ของการดำเนินการก่อนหน้านั้นไปยังwrite()ฟังก์ชันซึ่งเขียนข้อมูลออกไปยังไฟล์ตามค่าเริ่มต้น แต่เราได้แทนที่ด้วยการส่งสตริงว่างสำหรับพารามิเตอร์ตัวที่สองชื่อไฟล์ดังนั้นมันจึงเขียนตารางออกไป สถานีแทน พารามิเตอร์ถัดไป1เพียงแค่บอกว่าเราต้องการเอาต์พุตของเราในรูปแบบคอลัมน์เดี่ยว

R มีฟังก์ชั่นการสร้างตัวเลขสุ่มอื่น ๆอีกมากมายที่สร้างขึ้นในระบบฐาน ตัวอย่างเช่นเราสามารถเลียนแบบjotคำสั่งในคำตอบของ lcpriani ด้วยสคริปต์นี้:

$ Rscript -e 'write(round(runif(10, 12, 27)), "", 1)'

ที่นี่เราใช้runif()เพื่อรับ 10 ตัวเลขสุ่มกระจายอย่างสม่ำเสมอจาก 12 ถึง 27 เช่นrnorm()ที่เราใช้ข้างต้นฟังก์ชั่นนี้จะส่งกลับค่าจุดลอยดังนั้นเราต้องให้round()พวกเขาเป็นค่าจำนวนเต็มที่ใกล้ที่สุดก่อนที่จะเขียนพวกเขาไปที่หน้าจอ

R ยังมีชุด Add-on มากมายในCRANซึ่งเป็นที่เก็บแพคเกจที่จำลองมาจาก CPAN ของ Perl สิ่งหนึ่งที่คุณอาจสนใจคือเรียกง่ายๆว่าrandomซึ่งทำหน้าที่เป็นส่วนต่อประสานกับrandom.orgซึ่งเป็นบริการที่ส่งกลับตัวเลขสุ่มจริงที่สร้างขึ้นจากเสียงบรรยากาศ

R เป็นสภาพแวดล้อมการเขียนโปรแกรมที่สมบูรณ์ดังนั้นอาจเป็นไปได้ว่าคุณไม่จำเป็นต้องเอาตัวเลขออกจาก R ในรูปแบบข้อความ คุณอาจจะสามารถแก้ปัญหาทั้งหมดของคุณในอาร์ได้เลย


วิธี R คืออะไรที่จะได้รับตัวเลขสุ่ม x จากช่วงเวลาที่กำหนด? เช่น 100 ตัวเลขสุ่มระหว่าง 10 ถึง 200 (เช่นจากการแจกแจงแบบปกติ)
maxschlepzig

ฉันเพิ่มข้อมูลเกี่ยวกับการเลียนแบบjotคำสั่งlcpriani ของคำตอบข้างต้น สำหรับการ จำกัด ค่าสำหรับrnorm()นั่นไม่ใช่วิธีการแจกแจงแบบปกติ หากคุณใช้ค่าเริ่มต้นเป็น 0 และ SD เป็น 1 ดังนั้น 1,000 ยังคงเป็นค่าส่งคืนที่เป็นไปได้ R จะให้คุณเขียนสิ่งที่จะยึดค่าเพื่อเอาสิ่งต่าง ๆ ออกนอกช่วงที่กำหนด แต่คุณอาจจะใช้การแจกแจงแบบปกติในทางที่ผิด
Warren Young
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.