Điểm:1

Cách tái tạo hạt giống trong Trình tạo số ngẫu nhiên như WELL, KISS, v.v.

lá cờ cn

tôi tò mò về Đệm hạt của Trình tạo số ngẫu nhiên.
(Tôi chắc chắn rằng thuật ngữ đệm hạt là không chính xác. Nếu ai đó biết từ thích hợp, vui lòng cho tôi biết :))

Độn hạt mà tôi đã đề cập là gì?

Bạn biết rằng trình tạo Số giả ngẫu nhiên cần hạt giống để thực hiện đúng công việc của nó. Ví dụ, một trong những RNG nổi tiếng nhất, mt19937 chỉ cần một hạt giống.

Tuy nhiên, trong thuật toán KISS (George Marsaglia, 2011, phiên bản 64bit), bạn chỉ cần 2 hạt giống, cngxs. Trong trường hợp Wichmann_hill, bạn cần 3 hạt giống, s1, s2, s3. Trong Thuật toán WELL19937, bạn cần 624 hạt.

Theo tôi, dễ dàng để có được 1 hoặc 2 hạt giống. Tuy nhiên, để có được 624 hạt giống cho WELL19937 sẽ rất khó.

Vì vậy, tôi nghĩ rằng một số thuật toán sẽ triển khai "Đệm hạt giống", nghĩa là tạo một hạt giống cho các hạt giống theo yêu cầu như SHA256. Trong trường hợp SHA, nếu thông báo đầu vào không vừa với độ dài, chúng tôi sẽ tạo một số thông báo được gọi là đệm.

Điều tôi muốn hỏi.

  1. Có bất kỳ thuật ngữ thích hợp nào về "Đệm hạt" trong Trình tạo số ngẫu nhiên không?

  2. Làm thế nào để "Động hột"? Có tiêu chuẩn nào không?

SAI Peregrinus avatar
lá cờ si
Trang web stackexchange này là về mật mã. Mật mã sử dụng Trình tạo số ngẫu nhiên giả bảo mật bằng mật mã (CSPRNG), không sử dụng hạt giống bên ngoài có thể lặp lại. Đối với một CSPRNG an toàn, việc tái tạo hạt giống PHẢI là không thể.
TyeolRik avatar
lá cờ cn
@SAIPeregrinus Vâng. Tôi biết trang web này là về Mật mã học. Ngoài ra, Số ngẫu nhiên giả (Không phải CSPRNG) thuộc phạm vi của Mật mã học. Bởi vì, một trong những cuốn sách giáo khoa nổi tiếng nhất, Mật mã học ứng dụng, Bruce Schneier, giới thiệu Trình tạo số giả ngẫu nhiên cổ điển như LCG, LFSR, v.v. Được rồi, nếu bạn nghĩ rằng trang web này không phù hợp để hỏi, bạn có thể giới thiệu cho tôi nên hỏi ở đâu không?
SAI Peregrinus avatar
lá cờ si
Nếu bạn đang hỏi về việc lập trình PRNG như vậy, bạn chỉ cần chuyển đầu vào bằng bất kỳ phương thức nào mà ngôn ngữ sử dụng yêu cầu, ví dụ: chuyển con trỏ tới cấu trúc cho phiên bản C. Phần đệm sẽ được xác định bởi trình biên dịch và kiến ​​trúc. Điều đó sẽ phù hợp với Stackoverflow.
SAI Peregrinus avatar
lá cờ si
Nếu bạn đang hỏi về cách tìm (các) hạt giống từ đầu ra của PRNG, điều đó có liên quan ở đây nhưng không có quy trình đệm như vậy.
TyeolRik avatar
lá cờ cn
@SAIPeregrinus Không, tôi không yêu cầu tìm hạt giống từ đầu ra của PRNG giống như Hash Collision. Điều tôi đang hỏi là, **Làm thế nào để đặt (nhiều) hạt thích hợp?** Không nhận được 624 hạt, mà điều khiển hạt từ MỘT HẠT, gần giống như phần đệm SHA.
SAI Peregrinus avatar
lá cờ si
Từ việc đọc lướt qua bài báo tại (https://www.iro.umontreal.ca/~lecuyer/myftp/papers/lfsr04.pdf), có vẻ như hạt giống chỉ là một vectơ bit trạng thái ban đầu. Mã này dường như hỗ trợ điều đó, vì init nhận một int*. Vì vậy, bạn chỉ cần khởi tạo mảng các số nguyên (không có phần đệm) thành các giá trị bạn muốn sử dụng làm hạt giống. Có lẽ chỉ cần sử dụng memcpy. Có lẽ phù hợp với stackexchange hơn ở đây, nhưng mã trong bài báo đó khá khó đọc (không có tên biến/hàm rõ ràng) nên bạn có thể không nhận được nhiều trợ giúp.
TyeolRik avatar
lá cờ cn
@SAIPeregrinus Tôi đã đọc bài báo đó và cũng [tự mã hóa lại](https://github.com/TyeolRik/rngset/blob/main/well.go) Nhưng, tôi **không thực sự hỏi** về mã hóa, nhưng **hỏi về "hạt giống tốt là gì"**. Như bạn đã biết, trong mã gốc, init nhận một ```int*``` có nghĩa là chỉ đầu vào của người dùng. Nhưng, trong thế giới thực, như tôi đã đề cập, rất khó để có được “Hạt giống tốt”. Vì vậy, tôi đang hỏi làm thế nào để tạo ra những hạt giống tốt với một hoặc hai hạt giống... (không có CSPRNG, từ /dev/random/ )
SAI Peregrinus avatar
lá cờ si
Một hạt giống tốt là dữ liệu ngẫu nhiên thống nhất. Nó phải có shannon entropy gần bằng 1 bit/bit. Cách dễ nhất để có được điều đó là sử dụng RNG phần cứng làm trắng đầu ra của nó bằng CSPRNG, bất kỳ thiết kế nào khác sẽ kém hơn về bảo mật hoặc hiệu suất. Nếu bạn đang cố gắng tạo một hạt giống có thể lặp lại, ví dụ như đối với mô phỏng Monte Carlo, thì bạn chỉ cần lưu một số đầu ra từ csprng của mình vào một tệp và sử dụng bất kỳ RNG nào bạn muốn với nó, vì bạn không cần bảo mật.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.