Phiên bản ngẫu nhiên của seq để tạo chuỗi số / từ ngẫu nhiên?


10

Cách đây một thời gian, tôi đã sử dụng một công cụ giống như seq để in một chuỗi các số giả ngẫu nhiên được tạo thành thiết bị xuất chuẩn. Bạn có thể chỉ định một phạm vi, hạt giống, và số lượng mẫu và nhiều hơn nữa.

Tôi vừa quên tên của công cụ này. Bất cứ ai có thể giúp tôi ra?

Có lẽ bạn biết ngay cả một công cụ tiên tiến hơn, ví dụ, hỗ trợ các phân phối xác suất khác nhau hoặc thậm chí tạo ra một chuỗi các từ ngẫu nhiên dưới các bảng chữ cái khác nhau và phân phối độ dài / ký tự.

Câu trả lời:


11

Bạn có nghĩa là 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

Nếu bạn sử dụng Ubuntu, gói đó là athena-jot. Một ví dụ đơn giản:

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

Tạm biệt.


vâng, jot là lệnh đó, cảm ơn! Một lần nữa, tôi đánh giá cao đề xuất thêm của các công cụ tạo trình tự tiên tiến hơn.
maxschlepzig

2

Nếu bạn không ngại viết một tập lệnh nhỏ để làm những gì bạn cần, tôi khuyên bạn nên thực hiện nó trong R , hệ thống thống kê nguồn mở.

Chẳng hạn, hãy xem xét lớp lót này để có danh sách 100 số phân phối Gaussian:

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

Hãy phá vỡ điều này.

Lệnh tiêu chuẩn Rđưa bạn vào một môi trường lập trình tương tác, sẽ tốt nếu bạn đang cố gắng tìm cách làm một cái gì đó bằng tay hoặc đang xây dựng một cái gì đó tăng dần, nhưng từ câu hỏi của bạn, có vẻ như bạn chỉ cần một danh sách các số để gửi đến một chương trình khác. Vì vậy, thay vào đó, chúng tôi sử dụng Rscript, hoạt động giống như một trình thông dịch kịch bản lệnh Unix truyền thống: bạn có thể chuyển cho nó tên của tệp chứa tập lệnh R hoặc sử dụng -ecờ tiêu chuẩn để truyền toàn bộ văn bản chương trình trên dòng lệnh.

rnorm()là hàm R để lấy danh sách các số ngẫu nhiên có phân phối "bình thường" hoặc Gaussian. Phải mất tới ba tham số, chỉ có tham số đầu tiên là bắt buộc, bao nhiêu số bạn muốn. Chúng tôi đã yêu cầu 100. Bằng cách lấy mặc định cho hai tham số tùy chọn khác, chúng tôi nhận được giá trị trung bình là 0 và độ lệch chuẩn là 1.

Số học sau đó chỉ thể hiện một tính năng thú vị của ngôn ngữ R: bạn có thể thực hiện số học trên toàn bộ bảng dữ liệu, ma trận, v.v., dễ dàng như một giá trị vô hướng trong một ngôn ngữ điển hình hơn. Tôi đã nhân tất cả các giá trị được tạo ra với 100 và thêm 100 vào chúng, chỉ vì tôi có thể. Bởi vì R là ngôn ngữ lập trình chính thức, không có giới hạn đối với những điều bạn có thể làm với danh sách số này. Đó là lợi thế của việc sử dụng một hệ thống như vậy thay vì lệnh có mục đích cố định như jot.

Chúng tôi chuyển kết quả của thao tác trước đó cho write()hàm, nó ghi dữ liệu ra một tệp theo mặc định, nhưng chúng tôi đã ghi đè điều đó bằng cách chuyển một chuỗi trống cho tham số thứ hai, tên tệp, do đó, nó ghi bảng ra thiết bị đầu cuối thay thế. Tham số tiếp theo 1, chỉ cho nó biết chúng tôi muốn đầu ra của chúng tôi ở định dạng cột đơn.

R có nhiều hàm tạo số ngẫu nhiên khác được tích hợp vào hệ thống cơ sở. Chẳng hạn, chúng ta có thể bắt chước jotlệnh trong câu trả lời của lcpriani với kịch bản này:

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

Ở đây chúng tôi đang sử dụng runif()để có được 10 số ngẫu nhiên phân bố đồng đều từ 12 đến 27. Giống như rnorm(), chúng tôi đã sử dụng ở trên, hàm này trả về các giá trị dấu phẩy động, vì vậy chúng tôi phải đưa round()chúng vào các giá trị nguyên gần nhất của chúng trước khi ghi chúng vào màn hình.

R cũng có một bộ tiện ích bổ sung phong phú trong CRAN , một kho lưu trữ gói được mô hình hóa trên CPAN của Perl. Một thứ bạn có thể quan tâm được gọi đơn giản là ngẫu nhiên , hoạt động như một giao diện cho Random.org , một dịch vụ trả về các số ngẫu nhiên thực sự được tạo ra từ tiếng ồn trong khí quyển.

R là một môi trường lập trình hoàn chỉnh, vì vậy có thể bạn không thực sự cần phải lấy số của mình ra khỏi R ở định dạng văn bản. Bạn có thể giải quyết vấn đề của mình hoàn toàn trong R. Hãy thử.


Cách R để lấy x số ngẫu nhiên từ một khoảng nhất định là gì? Ví dụ: 100 số ngẫu nhiên trong khoảng từ 10 đến 200 (ví dụ từ phân phối bình thường)?
maxschlepzig

Tôi đã thêm thông tin về việc bắt chước jotlệnh của lcpriani cho câu trả lời ở trên. Đối với việc giới hạn giá trị cho rnorm(), đó không phải là cách phân phối bình thường hoạt động. Nếu bạn lấy giá trị trung bình mặc định là 0 và SD là 1, thì 1000 vẫn là giá trị trả về có thể, điều đó cực kỳ khó xảy ra. R sẽ cho phép bạn viết một cái gì đó sẽ kẹp các giá trị để loại bỏ những thứ bên ngoài một phạm vi nhất định, nhưng sau đó bạn có thể đang sử dụng sai phân phối bình thường.
Warren Young
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.