Thuật toán tạo số giả ngẫu nhiên


12

Những thuật toán được sử dụng trong các trình tạo số ngẫu nhiên hiện đại và chất lượng tốt?


1
Đã thử lại "biến ngẫu nhiên" thành "biến ngẫu nhiên" để thống nhất với các câu hỏi tương tự.
whuber

Câu trả lời:


10

Trong R, cài đặt mặc định để tạo số ngẫu nhiên là:

  1. Đối với U (0,1), sử dụng thuật toán Mersenne-Twister
  2. Đối với các số Guassian sử dụng đảo ngược số của hàm phân phối chuẩn thông thường.

Bạn có thể dễ dàng kiểm tra điều này, viz.

> RNGkind()
[1] "Mersenne-Twister" "Inversion"

Có thể thay đổi trình tạo mặc định thành các PRNG khác, chẳng hạn như Super-Duper, Doesmann-Hill, Marsaglia-Multicarry hoặc thậm chí là PRNG do người dùng cung cấp. Xem? RNGkind để biết thêm chi tiết. Tôi chưa bao giờ cần phải thay đổi PRNG mặc định.

Các C GSL thư viện cũng sử dụng Mersenne Twister- theo mặc định.


Bạn có chắc chắn về điểm thứ hai của mình, tạo các biến ngẫu nhiên bình thường bằng cách đảo ngược CDF không? Nghịch đảo của CDF bình thường là một chức năng khá tốn kém để đánh giá. Tôi tưởng tượng phương pháp của Box-Muller sẽ nhanh hơn. Nhanh hơn vẫn sẽ là phương pháp ziggurat của Marsaglia để tạo ra các quy tắc.
John D. Cook

Tôi cũng thấy điều này đáng ngờ. Ziggurat của Marsaglia là mặc định trong Matlab và tôi không thể tưởng tượng Matlab tốt hơn R trong lĩnh vực tạo số ngẫu nhiên.
shabbychef

@ John Thật vậy, phương thức cực có sẵn trong R, xem gói setRNG.
chl


3

Xorshift PNG được thiết kế bởi George Marsaglia. Thời gian của nó (2 ^ 128-1) ngắn hơn nhiều so với Mersenne-Twister nhưng thuật toán rất đơn giản để thực hiện và cho vay để song song hóa. Hoạt động tốt trên các kiến ​​trúc nhiều lõi như chip DSP và Tesla của Nvidia.


Điều này sẽ tốt cho việc thực hiện trên GPU? Liên kết đến chi tiết, tài liệu tham khảo?
DarenW

2
Thomas, Howes, Luk - 2009 - So sánh CPU, GPU, GPU và mảng xử lý song song ồ ạt để tạo số ngẫu nhiên. doi.acm.org/10.1145/1508128.1508139 . Thảo luận + điểm chuẩn của một tập hợp các PNG thực thi trên CPU, GPU, FPGA và Mảng bộ xử lý song song lớn.
brotchie

Có lẽ cũng RNG của Rccuyer với nhiều luồng ( j.mp/bzJSlm )?
chl

3

Tại http://prng.di.unimi.it/, bạn có thể tìm thấy một loạt các trình tạo số ngẫu nhiên được thử nghiệm bằng TestU01, bộ thử nghiệm hiện đại cho các trình tạo số giả ngẫu nhiên thay thế cho dieharder và dieharder. Bạn có thể chọn và chọn.

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.