Thuật toán tạo số ngẫu nhiên cho bộ não con người? [đóng cửa]


37

Bạn có biết, hoặc bạn đã nghĩ ra bất kỳ thuật toán "trong đầu" thực tế, dễ học nào cho phép con người tạo ra các số ngẫu nhiên (hơi "đúng") không? Ý tôi là "trong đầu" .. tốt nhất là không có bất kỳ công cụ hay thiết bị bên ngoài nào. Ngoài ra, một sản lượng cao (nhiều số ngẫu nhiên mỗi phút) là mong muốn.

Đã hỏi điều này trên SO nhưng nó không nhận được nhiều sự quan tâm. Có lẽ điều này phù hợp hơn cho các lập trình viên.


7
@ S.Lott Tôi không nghĩ nó vô lý chút nào. Không thực tế? Tại sao, tất nhiên. Vô lý? Chắc chắn là không rồi. Và ngay cả khi nó là, sự vô lý có thể mở đường cho những suy nghĩ mới, hữu ích.
biziclop

21
9 .... 9 .... 9 .... 9 - Bạn không thể chứng minh nó không ngẫu nhiên.

13
S.Lott: Ý tưởng về việc dễ dàng tính toán trình tạo số giả ngẫu nhiên hoàn toàn không phải là vô lý. Tôi nghĩ OP muốn có một cách để tránh sự thiên vị của con người ở đây ....
Jens

8
Tôi thấy thật buồn cười (và đồng thời hơi thất vọng) có bao nhiêu người dường như đánh giá cao một cuộc tranh cãi về sự thiếu hiểu biết. "Tôi không thể tưởng tượng nó, do đó nó không thể tồn tại", hoặc câu trả lời hoàn toàn thiếu quan điểm.
biziclop

4
Câu hỏi này dường như lạc đề vì nó liên quan đến khả năng nhận thức của một cá nhân và không phải lập trình.

Câu trả lời:


36

Đây là một thuật toán từ George Marsaglia :

Chọn một số có 2 chữ số, giả sử là 23, "hạt giống" của bạn.

Tạo thành một số có 2 chữ số mới: chữ số 10 cộng với 6 lần chữ số đơn vị.

Trình tự ví dụ là 23 -> 20 -> 02 -> 12 -> 13 -> 19 -> 55 -> 35 -> ...

và chu kỳ của nó là thứ tự của cấp số nhân, 6, trong nhóm dư lượng tương đối nguyên tố với mô đun, 10. (59 trong trường hợp này).

"Các chữ số ngẫu nhiên" là các chữ số đơn vị của các số có 2 chữ số, nghĩa là 3,0,2,2,3,9,5, ... trình tự mod 10. Số học đủ đơn giản để thực hiện trong số của bạn cái đầu.


Điều này nghe thực sự tốt.
biziclop

4
Đây có thể không phải là vấn đề đối với nhu cầu của một người cụ thể, nhưng điều này chỉ cung cấp cho bạn 90 luồng khác nhau.
compman

5
79, 79, 79, 79, 79, 79, 79, 79, 79, 79, ôi thôi! Tôi cho rằng bạn phải ở lại <= 60, hoạt động tốt vì bạn có thể sử dụng đồng hồ cho hạt giống nếu bạn không có.
eds

4
@bed Um, cái gì? 79 -> 61 -> 15 -> ...
Izkata

1
Có lẽ @bed có nghĩa là 59. Tất cả các số từ 1-58 dường như là trò chơi công bằng.
Erhannis

26

Kiểm tra bài viết này về Geomancy . Cụ thể là phần tạo biểu đồ Geomantic . Nó liên quan đến một kỹ thuật tạo số giả ngẫu nhiên bằng cách sử dụng các chữ số nhị phân và một số phép tính đệ quy đơn giản. Có vẻ như bạn có thể làm điều này trong đầu khá dễ dàng (mặc dù một mảnh giấy sẽ giúp ích).

Tuyên bố miễn trừ trách nhiệm: Tôi đã không thử bản thân mình; khi tôi cần một số ngẫu nhiên đủ, tôi có thể nhận được một số đầu ra từ /dev/random, sử dụng randbất kỳ ngôn ngữ nào tôi có, hoặc cuộn d20 đáng tin cậy của tôi.

Nếu bạn là một thần đồng toán học, phương pháp Bình phương trung bình là một phương pháp tính toán khá nhẹ, nếu đáng chú ý là phương pháp không đáng tin cậy.


3
+1 Tôi nghĩ rằng đây là câu trả lời nghiêm túc đầu tiên cho câu hỏi này. Một chút buồn.
Jens

@Magnus Wolffelt - Tôi nhớ nó đã được đề cập trong bài nói chuyện TED của Ron Eglash về ý nghĩa văn hóa của hình học fractal ở Châu Phi; "Bói toán cát Bamana". Điều này khá thú vị, mặc dù tôi vẫn không biết bạn sẽ sử dụng kỹ thuật này vào lúc nào vì chúng tôi không còn cần đến những người làm dịu. ted.com/talks/ron_eglash_on_african_fractals.html
Inaimathi

1
Theo như tôi có thể thấy, phương pháp địa lý đó chỉ đơn giản cho phép bạn 'cải thiện' (tôi cho rằng 'debias' sẽ là một thuật ngữ tốt hơn) một nguồn ngẫu nhiên. Không được hắt hơi, nhưng không thực sự là những gì OP đang tìm kiếm. Điều đó không có nghĩa là nó không đẹp ....
Norman Gray

@Norman Grey - Bộ não của con người có thể đưa ra các số tùy ý sai lệch theo mặc định.
Inaimathi

@Inaimathi Chính xác: đó là lý do tại sao các số gỡ rối sẽ quan trọng và tại sao phương pháp bạn chỉ ra lại hữu ích. Hoặc tôi đang hiểu lầm bạn.
Norman Gray

10

Tôi nghĩ một giả định hợp lý là bạn phải dựa vào lượng thông tin bằng lời nói khổng lồ mà bạn lưu trữ trong não. Nguồn có thể là bất cứ điều gì, lời bài hát, bài thơ, bản phác thảo Monty Python, nhưng nó phải là một cái gì đó bạn biết bằng trái tim.

Sau đó, bạn phải chọn một phần khá ngẫu nhiên của nó để loại bỏ sự thiên vị vô thức càng nhiều càng tốt. Một cách để làm điều này chẳng hạn sẽ là chọn một bài hát, chọn một số ktrong khoảng từ 10 đến 20 và sau đó tìm kchữ cái trong lời bài hát.

Rõ ràng điều này sẽ không cung cấp cho bạn một bản phân phối thống nhất, vì tần suất của các chữ cái là khác nhau, tuy nhiên đó là một chữ cái ngẫu nhiên, hoặc ít nhất là gần với nó như tôi tin là có thể mà không cần nguồn bên ngoài.

Cập nhật: Nhân tiện , khi mọi người được yêu cầu viết một chuỗi ngẫu nhiên nói tung đồng xu, lỗi phổ biến nhất cho đến nay là làm cho chuỗi của bạn "quá ngẫu nhiên": các kết quả giống hệt nhau sẽ quá ngắn, có độ dài chạy đơn giản phân tích sẽ tiết lộ. Phương pháp này chủ yếu nhằm tránh bẫy này. Tất nhiên các dị thường khác có thể phát sinh từ cái bóng của sai lệch độ dài chạy này, nhưng bạn cần các thí nghiệm thích hợp để tìm ra chúng. Trớ trêu thay, một thuật toán để tạo ra các số ngẫu nhiên bằng cách suy nghĩ một mình không thể được tìm thấy bằng cách suy nghĩ một mình.


Thậm chí sau đó tôi sẽ mong đợi rằng bạn sẽ được thiên vị theo một số cách tinh tế. (IE có xu hướng chọn cùng một nhóm bài hát)
Zachary K

@Zachary K Không còn nghi ngờ gì nữa, nhưng sau đó bạn cũng phải chọn một số, điều này sẽ lan truyền nó một chút. Mặc dù không thể loại bỏ sự thiên vị, nhưng phương pháp này gần như chắc chắn ngăn bạn biết bạn sẽ chọn chữ cái nào (mặc dù theo thời gian bạn nhất định phải ghi nhớ một số).
biziclop

Eini mini miny moe, như chúng ta thường làm khi còn nhỏ.
Zachary K

2
"Chọn một số k trong khoảng từ 10 đến 20". 17. Số ngẫu nhiên ít nhất.
S.Lott

@ S.Lott Không quan trọng số này ngẫu nhiên như thế nào. Lý do duy nhất bạn cần là bạn có xu hướng nhớ một vài chữ cái đầu tiên của mọi thứ dễ dàng hơn.
biziclop

9

Mẫu đồng hồ của bạn.

Tôi làm điều này nếu tôi cần một số ngẫu nhiên có hệ số 60 (giây). Lấy modulo thích hợp của bất cứ lúc nào. 4:17:23 PM, mô phỏng một cuộn chết, trở thành 5.


Và cho một số lượng lớn mỗi phút?
Gary Rowe

Không chắc tôi làm theo. Bạn đang nói làm cho nhóm số 3600 bằng cách tính cả phút? Tôi đoán, nhưng số càng lớn thì càng ít ngẫu nhiên? Giống như bạn không thể nhanh chóng lấy mẫu dễ dàng.
Đánh dấu Canlas

1
@Gary Rowe Tiêu chí này phải bị loại bỏ Tôi sợ, đơn giản vì bất kể phương pháp nào được sử dụng, bộ não con người đơn giản là quá chậm.
biziclop

Xin lỗi, tôi chỉ tự hỏi làm thế nào cách tiếp cận của bạn hoạt động nếu bạn cần nhiều hơn 60 số mỗi phút. Nhìn nhận lại, việc yêu cầu bộ não con người tạo ra nhiều con số mỗi phút sẽ giúp tối đa hóa nó, vì vậy đừng lo lắng về điều đó.
Gary Rowe

@biziclop Không có vấn đề. Có vẻ như tôi đã có một xung đột bình luận trong khi xem xét tình huống với cách tiếp cận của @ Mark.
Gary Rowe

5

Câu hỏi tuyệt vời. Tôi sợ rằng một câu trả lời tốt có thể chứng minh rất khó khăn.

Nhưng khi bắt đầu, việc tạo ra sự ngẫu nhiên của Real thật sự rất dễ dàng khi có hai người tham gia: chỉ cần để một trong số những người im lặng đếm số đầu của họ, và người còn lại nói thì dừng lại sau một khoảng thời gian tùy ý. Sau đó, số này có thể được chuyển đổi thành các bản phân phối khác bằng các phương pháp tiêu chuẩn.

Để làm cho phương pháp này mạnh mẽ, mô đun không được quá lớn, nếu không sẽ có sự thiên vị mạnh đối với số lượng nhỏ. Tôi thực sự quan tâm để xem liệu có tồn tại bất kỳ công việc phân tích các thuộc tính ngẫu nhiên của phương pháp này.


Điều quan trọng là việc đếm được thực hiện nhanh chóng, tôi nghĩ - người đếm nên coi chừng không đếm nhịp, chỉ khoảng 1 hoặc 2 bước mỗi giây. Bởi vì cần có một số lượng đáng kể các chu kỳ (bằng trực giác ≥4) thông qua tất cả các số để đạt được đủ entropy.
Aaron Thoma

Đề xuất cải tiến cho tính ngẫu nhiên tốt hơn : Người đếm chọn hạt giống ngẫu nhiên bí mật X₀ giữa 0 và mô đun trước; kết hợp với việc đếm, điều đó sẽ mang lại sự ngẫu nhiên tốt ở nỗ lực tư duy tối thiểu (ngay cả khi đếm chậm, liên quan đến thời gian đếm; tức là số chu kỳ thấp - theo trực giác ≥2 sẽ ổn; <2 sẽ ổn-ish).
Aaron Thoma

4

Đây là một câu hỏi phức tạp; Tôi sẽ cố gắng giải thích một chút mà không đi lang thang quá xa vào đám cỏ dại.

Đầu tiên, chúng ta phải hỏi " sự ngẫu nhiên thực sự" là gì? Những cuộc thảo luận như vậy nhanh chóng thoái hóa vào vùng nước triết học, nhưng ý chính là: "vũ trụ có thực sự ngẫu nhiên" không? Nói cách khác, nếu bạn định lượng thời gian và vật chất, bạn có thể tính toán trạng thái tiếp theo của vũ trụ từ trạng thái hiện tại không? Nếu có, thì vũ trụ mang tính quyết định và không có sự ngẫu nhiên thực sự (xem ý tôi là gì về "triết học"?)

Bởi vì "tính ngẫu nhiên thực sự" rất khó xác định, chúng tôi thường giải quyết cho "giả danh". Điều này thường được yêu cầu khi tạo số "ngẫu nhiên" trên máy tính, tất nhiên.

Trình tạo số giả ngẫu nhiên đơn giản nhất sẽ giống như thuật toán "9 .. 9 .. 9 .." nổi tiếng của Dilbert. Nhưng theo trực giác thì nó có vẻ không tốt lắm (tất nhiên đó là trò đùa). Các nhà thống kê đã phát triển một loạt các thử nghiệm để cho biết liệu một chuỗi các kết quả đầu ra ngẫu nhiên có mục đích là "tốt" hay không. Bắt đầu với trang wikipedia cho "kiểm tra bình phương" và bạn có thể dành một buổi chiều chỉ để đọc về các bài kiểm tra này.

Một thuật toán máy tính đơn giản như "trình tạo cộng hưởng tuyến tính" tạo ra các số đủ tốt cho một bài kiểm tra bình phương (tuy nhiên bạn vẫn cần "gieo" thuật toán này từ một cái gì đó).

Bước tiếp theo trong "lòng tốt" là "tính ngẫu nhiên mạnh về mặt mật mã" có nghĩa là đưa ra một chuỗi a1, a2, ... bạn không thể dự đoán số tiếp theo trong chuỗi với "xác suất hợp lý" trừ khi bạn sử dụng nhiều tính toán. Những con số này đôi khi được gọi là "giả ngẫu nhiên tính toán." Một cách phổ biến để có được chuỗi như vậy là thông qua "chuỗi băm" như thế này: a1 = SHA512 (a2), a2 = SHA512 (a3), ... Vì chúng tôi tin rằng (dựa trên kinh nghiệm, không phải bằng chứng toán học) mà SHA512 là tính toán khó đảo ngược, chúng tôi tin rằng a2 là "không thể" dự đoán được chỉ với a1.

Vì vậy, bây giờ câu hỏi đặt ra, điều tốt nhất con người có thể làm theo các quy tắc quy định trong câu hỏi của bạn là gì? Con người nổi tiếng là xấu trong việc tạo ra sự ngẫu nhiên; đã từng có một trang web mà bạn sẽ cố gắng tạo ra các lần lật đồng xu bằng cách gõ "ngẫu nhiên" H, T, T, H, H, T, T, v.v. như thể bạn đang lật một đồng xu (nhưng bạn làm điều đó đầu của bạn). Sau một thời gian, trang web sẽ bắt đầu dự đoán số lần lật của bạn tốt hơn 50% thời gian (sử dụng Mô hình Markov ẩn). Chúng tôi chỉ xấu về điều này.

Có nhiều cách để cải thiện tình hình bằng các kỹ thuật trộn khác nhau có thể thực hiện được trong đầu bạn. Và thậm chí có những ứng dụng tôi có thể mơ về lý do tại sao bạn có thể muốn điều này (tù nhân chính trị muốn mã hóa tin nhắn cho các đồng minh bên ngoài). Nhưng tôi nghĩ bài này là đủ dài. :)


1
Mặc dù liệu một quá trình vật lý thực sự ngẫu nhiên có tồn tại để tranh luận hay không (mặc dù các thí nghiệm liên quan đến nghịch lý EPR cho thấy câu trả lời tích cực), một định nghĩa lý thuyết về chuỗi ngẫu nhiên vẫn tồn tại, dựa trên độ phức tạp Kolmogorov.
biziclop

3

Lý do cho sự phổ biến của các RNG dựa trên công cụ là một thuật toán đầu tốt để tạo số ngẫu nhiên vẫn chưa được phát triển .

May mắn thay, máy tạo số ngẫu nhiên cầm tay - bao gồm tiền xu để lật, xúc xắc (với nhiều mặt khác nhau) để lăn, thẻ để hái và ống hút để vẽ - tương đối dễ dàng để có được với chi phí thấp. Hơn nữa, đối với những người yêu thích công nghệ trong số chúng ta, có một số mô phỏng khá tốt về các công cụ này có sẵn cho hầu hết các nền tảng di động.

Tôi chân thành muốn giới thiệu bất kỳ trong số này trên bất kỳ thay thế thịt-kho.


1
Và những thiết bị vật lý này thực sự có một tính chất không thể đoán trước đối với chúng, vì vậy theo một nghĩa nào đó, chúng là ngẫu nhiên hơn so với các thuật toán máy tính tốt nhất.
Omega Centauri

( @OmegaCentauri: Đương nhiên tôi thấy những gì bạn đã làm ở đó; o!) (Không chắc các chơi chữ được dự định, nhưng tôi thích nó :).) )
Aaron Thoma

3

Rất ngẫu nhiên, số lượng lớn mỗi phút và được tạo ra bởi con người? Sẽ không xảy ra

Các vấn đề chính bạn sẽ gặp phải là

  • Mọi người nhanh chóng chán nản nên các mô hình sẽ xảy ra nhanh chóng
  • Bộ não con người có rất nhiều cấu trúc dành cho nhận dạng / sáng tạo mẫu, do đó bạn sẽ phải đánh bại điều đó
  • Các số ngẫu nhiên thực sự chứa các lần lặp lại mà con người cố gắng tránh
  • Con người không tốt với số lượng lớn

Điều này khiến rất nhiều nhà mật mã từ bỏ các kỹ thuật "trong đầu" để ủng hộ các quy trình bên ngoài là ngẫu nhiên vì quá đơn giản để tìm ra các mẫu dựa trên các số "trong đầu".

Lạc đề nhưng thú vị

Mặc dù đây không phải là cơ chế tạo số ngẫu nhiên trong đầu bạn, thuật toán Solitaire (như được mô tả trong Cryptonomicon của Neal Stephenson ) cho thấy mức độ khó sử dụng số ngẫu nhiên cho mục đích mã hóa. Nó chỉ yêu cầu một gói thẻ chơi thông thường để tạo đầu ra hợp lý an toàn nhưng phương pháp cần thực hiện khá phức tạp.


1
Tôi nghĩ rằng điều này không trả lời câu hỏi. 4 điểm trong câu trả lời của bạn chỉ áp dụng nếu mọi người cố gắng tìm các số ngẫu nhiên mà không có thuật toán. Tôi nghĩ OP nhận thức được điều đó và đây là lý do tại sao anh ta yêu cầu một thuật toán mà mọi người có thể làm trong đầu và cho kết quả tốt, tức là không phải chịu những vấn đề được đề cập trong câu trả lời của bạn.
FabianB

2

Tôi thực sự tò mò về bất cứ điều gì mà mọi người có thể nghĩ ra về vấn đề này.

Hãy bước ra khỏi bàn làm việc và đi đến Las Vegas.

Nhân loại có hàng tá thủ tục ngẫu nhiên. Bạn có thể thấy tất cả chúng ở Las Vegas.

Bạn có vòng tròn quay. Bạn có khối vuông. Và bạn đã xáo trộn mã thông báo. Họ đều làm việc rất tuyệt vời.

Hình khối có lẽ là lâu đời nhất. Rõ ràng có những cây gậy 4 mặt thon dài được sử dụng tại một điểm. Các đốt ngón tay hình khối đối xứng của cừu đã phổ biến trong nhiều thiên niên kỷ. Chúng tôi đã sử dụng các loại ngẫu nhiên đó kể từ - có lẽ - về cùng thời gian chúng tôi phát triển ngôn ngữ.

http://itunes.apple.com/us/app/motionx-dice/id287509231?mt=8

"Bất cứ ai xem xét các phương pháp số học tạo ra các chữ số ngẫu nhiên, tất nhiên, trong trạng thái sin sin

--- John von Neumann


7
Downvote - Tôi không quan tâm đến các công cụ bên ngoài để tạo số ngẫu nhiên, mà là các thuật toán trong đầu có thể dựa vào ký ức hoặc kích thích để tạo ra các số thực sự ngẫu nhiên.
Magnus Wolffelt

3
bạn không thể lắc xí ngầu trong đầu
jk.

2
@ jk01: Đúng. Bạn cũng không thể làm ngẫu nhiên trong đầu.
S.Lott

@ S.Lott - Tôi nghĩ điều bạn muốn nói là "Một người bình thường không thể tạo ra những con số ngẫu nhiên nhất quán trong đầu họ với tốc độ cao bằng phương pháp ngây thơ và không có công cụ bên ngoài".
Inaimathi

1
@Inaimathi. Không, tôi đang nói điều gì đó mạnh mẽ hơn nhiều. Bạn không thể làm ngẫu nhiên trong đầu của bạn. Bộ não của bạn chứa đầy những thành kiến, vì vậy bạn cần một thuật toán. Không có thuật toán hữu hạn, hiệu quả, xác định là ngẫu nhiên. Bạn chỉ đơn giản là không thể làm điều đó. Không có thuật toán đủ đơn giản nào là giả ngẫu nhiên, vì vậy bạn không thể tính gần đúng ngẫu nhiên. Xúc xắc là nhỏ, tiện dụng và có một lịch sử sử dụng lâu dài.
S.Lott

1

Tôi không thể nghĩ về bất kỳ. Trong thực tế tôi sẽ mong đợi rằng bất cứ điều gì bạn nghĩ ra sẽ có quá nhiều thành kiến ​​trong đó đến mức nó sẽ vô giá trị.

Nếu tôi cần số ngẫu nhiên, tôi thường tung xúc xắc.


0

Bạn đang yêu cầu một LCM bạn có thể làm trong đầu? Lưu ý rằng ý tưởng này tốt hơn xúc xắc vẫn vô lý.

Tuy nhiên, điều này là ngẫu nhiên như bất kỳ thuật toán hữu hạn, xác định và hiệu quả có thể có thể.

http://www.vias.org/simutions/simusoft_lincong.html

http://www1.i2r.a-star.edu.sg/~knandakumar/nrg/Tms/Probability/Probgenerator.htmlm

U_ {k + 1} = (a \ lần U_k + b) mod (m + 1).

Sẽ dễ dàng hơn để xem điều này đang làm gì nếu chúng ta chọn các giá trị nhỏ a = 5, b = 1 và m = 7. Bạn sẽ có thể làm điều đó trong đầu của bạn.


Tôi tự hỏi nếu có một phiên bản ngẫu nhiên của cái này ( máy phát đồng quy tuyến tính (LCG) ), điều đó có thực sự dễ thực hiện trong đầu của một người không? a = 1 lý tưởng, a = 2 giây - lý tưởng. (Suy nghĩ của tôi cho đến nay về điều này trong bình luận tiếp theo.)
Aaron Thoma

(( Tôi nghĩ a = 1, b nguyên tố, b được chọn khéo léo, có thể là sự thay thế khả thi hơn cho m lớn hơn, nó vẫn hoạt động tốt. Sau đó, tôi nhận thấy điều đó có thể không đúng: Với b≈0 hoặc b≈m, nó sẽ đi qua tuần tự qua các con số, vì vậy tôi nghĩ b≈m / 2 là câu trả lời, nhưng sau đó tôi nhận thấy, đó cũng có thể là tuần tự (đối với nhỏ | bẻ m / 2 | / m), chỉ ở hai vị trí xen kẽ. b≈m / 3, nó có thể là tuần tự, xen kẽ giữa 3 vị trí, đối với b≈m / 99, vấn đề sẽ không ở dạng xen kẽ nữa, nhưng sẽ mất ~ 99 bước để chuyển qua một phép trừ modulo. ))
Aaron Thoma
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.