Tài liệu tham khảo và cách thực hành tốt nhất để đặt hạt giống trong thế hệ số giả ngẫu nhiên


11

Trong tài liệu này , liên quan đến lệnh "đặt hạt giống", người Stata thảo luận về các vấn đề liên quan đến cài đặt hạt giống khi tạo số giả ngẫu nhiên.

Một "không" đáng chú ý là "không sử dụng chuỗi số tự nhiên như hạt giống, vì điều này có một mô hình và gây nguy hiểm cho giả ngẫu nhiên".

Một "làm" đáng chú ý duy nhất trong một phần tư , là chỉ đặt một hạt giống trong suốt cuộc đời của bạn và sau đó ghi lại "trạng thái" của quá trình được tạo vào cuối mỗi thử nghiệm, để thử nghiệm tiếp theo sẽ tiếp tục tại điểm nơi quá trình đã dừng lại.

Rõ ràng, lời khuyên trên phụ thuộc vào số lượng giả ngẫu nhiên dự kiến ​​mà người ta sẽ tạo ra trong thời gian nghiên cứu của mình. Có lẽ một twister Mersenne sẽ đáp ứng nhu cầu cuộc sống của nhiều nhà nghiên cứu ...

Bây giờ, tôi không có nhiều kinh nghiệm liên quan đến PRNG về lý thuyết hoặc thực tế, vì vậy tôi không thể tranh luận về những đề xuất này - chúng nên được chứng minh là hợp lệ hoặc không hợp lệ trên cơ sở lý thuyết và thống kê toán học cứng.

Vì vậy, câu hỏi của tôi là

1) Bạn có thể giúp giải thích hoặc làm mất hiệu lực những lời khuyên được đưa ra ở trên, hoặc chỉ ra một tài liệu tham khảo liên quan đến các vấn đề như vậy không?

2) Bạn có thể cung cấp tài liệu tham khảo cung cấp "thực tiễn tốt nhất" trong việc thiết lập hạt giống không?

3) Làm thế nào để bạn đi về nó trong công việc của bạn, và tại sao?

mnPRNGmnmn

Một chuỗi liên quan (mặc dù tập trung hơn nhiều) là
Đặt hạt giống trước mỗi khối mã hoặc một lần cho mỗi dự án?

Tôi có cảm giác đây có lẽ nên là một wiki cộng đồng, các mod hãy quyết định điều đó.


4
Trang hướng dẫn Stata đó đưa ra các giả định ngầm định quan trọng về lý do tại sao một người sử dụng hạt giống. Lý do chính tôi sử dụng hạt giống (trong các bài đăng của tôi ở đây trên CV) là để tạo ra các ví dụ có thể lặp lại. Để chứng minh rằng tôi đã không nghịch hạt giống cho đến khi ví dụ theo ý thích của tôi (!), Tôi (hầu như) luôn sử dụng cùng một hạt giống. Điều này rất mâu thuẫn với lời khuyên của Stata bởi vì tôi có một mục đích khác với những gì họ phải có trong đầu (điều không được nêu ra). Đạo đức ở đây là thực hành tốt nhất phụ thuộc vào mục đích.
whuber

@whuber Cảm giác của tôi là lời khuyên được đưa ra trong tài liệu mà tôi đề cập nhằm mục đích duy trì cả "tính ngẫu nhiên" và độ tái lập của chuỗi được sử dụng (thông qua việc ghi lại "trạng thái" của quy trình, như họ nói). Những mục tiêu này có vẻ đáng theo đuổi trong bất kỳ thiết lập nào, dù mục đích nghiên cứu là gì, không?
Alecos Papadopoulos

1
Chắc chắn rằng chúng đáng giá - nhưng điều đó không biện minh cho việc biến chúng thành "dos" và "don" nhất định như được thể hiện bởi trang hướng dẫn đó. Vấn đề với dicta không phân loại như vậy là những người khác - chẳng hạn như luật sư - sẽ được dẫn đến nghĩ rằng bất kỳ hành vi trái ngược nào vốn đã sai, bất kể mục đích hay hoàn cảnh. Điều quan trọng là để lại chỗ cho sự phán xét trong thực hành thống kê! Đặc biệt, chúng tôi xin vui lòng không giới hạn các khuyến nghị cho việc sử dụng phần mềm với "thực tiễn tốt nhất".
whuber

@whuber Việc tôi sử dụng làm "kích thích" một tài liệu được liên kết với một phần mềm cụ thể không khiến câu hỏi của tôi là về "các khuyến nghị cho việc sử dụng phần mềm". Các câu hỏi được đặt ra rõ ràng là về các chính sách được sử dụng bởi các nhà nghiên cứu trong việc tiến hành nghiên cứu thống kê , vì vậy tôi thấy không có gì khó hiểu ở đây.
Alecos Papadopoulos

3
Giả sử PRNG của bạn là tốt, tại sao việc đặt hạt giống với một mẫu sẽ tạo ra sự khác biệt, đó không phải là toàn bộ quan điểm của PRNG?
màu tím51

Câu trả lời:


3

Đối với những gì nó có giá trị, điều này dựa trên kinh nghiệm chứ không dựa trên phân tích toán học:

Tôi nghĩ rằng trừ khi bạn đang thực hiện mật mã, trong đó các mẫu tinh tế có thể rất tệ, hạt giống nào bạn đặt sẽ không tạo ra sự khác biệt, miễn là bạn sử dụng các PRNG tốt được chấp nhận như Mersenne Twister và không phải là các mẫu cũ như máy phát đồng quy tuyến tính. Theo như tôi biết, không có cách nào bạn có thể biết được số ngẫu nhiên nào sẽ xuất phát từ một hạt giống nhất định mà không thực sự chạy PRNG (giả sử đó là một số khá), nếu không, bạn chỉ cần lấy thuật toán mới đó và sử dụng thuật toán đó làm bộ tạo số ngẫu nhiên.

Một viễn cảnh khác: bạn có nghĩ rằng bất kỳ mô hình tinh tế nào trong mô phỏng Monte-Carlo của bạn có thể có cường độ lớn hơn tất cả các lỗi đo lường, gây nhiễu và lỗi được đưa ra bởi các giả định mô hình hóa khác không?

Tôi sẽ chỉ sử dụng một hạt giống ngẫu nhiên lúc đầu để tái tạo và không đặt hạt giống trước mỗi cuộc gọi, trừ khi tôi đang gỡ lỗi, trong đó tôi cần đảm bảo hai thuật toán khác nhau tạo ra kết quả giống nhau cho cùng một dữ liệu đầu vào.

Tuyên bố miễn trừ trách nhiệm: nếu bạn mô phỏng lò phản ứng hạt nhân hoặc hệ thống kiểm soát tên lửa hoặc dự báo thời tiết, tốt nhất để tham khảo ý kiến ​​các chuyên gia tên miền, tôi không chịu trách nhiệm trong trường hợp đó.

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.