Vẽ số nguyên độc lập & thống nhất ngẫu nhiên từ 1 đến bằng cách sử dụng fair d6?


18

Tôi muốn vẽ các số nguyên từ 1 đến một số cụ thể bằng cách tung một số con xúc xắc sáu mặt công bằng (d6). Một câu trả lời tốt sẽ giải thích tại sao phương pháp của nó tạo ra các số nguyên thống nhấtđộc lập .NN

Như một ví dụ minh họa, sẽ rất hữu ích khi giải thích cách giải pháp hoạt động cho trường hợp .N = 150N=150

Hơn nữa, tôi muốn thủ tục có hiệu quả nhất có thể: trung bình cuộn số d6 ít nhất cho mỗi số được tạo.

Chuyển đổi từ senary sang thập phân được cho phép.


Câu hỏi này được lấy cảm hứng từ chủ đề Meta này .

Câu trả lời:


12

Tập hợp của các kết quả có thể nhận dạng riêng biệt trong cuộn độc lập của một khuôn có mặt có các phần tử . Khi chết là công bằng, điều đó có nghĩa là mỗi kết quả của một lần lăn có xác suất và tính độc lập có nghĩa là mỗi kết quả này sẽ có xác suất nghĩa là chúng có phân phối đồng đềuΩ ( d , n ) Ω(d,n)n nd = 6 d=6d ndn 1 / d 1/d( 1 / d ) n : (1/d)n:P d , n .Pd,n.

Giả sử bạn đã nghĩ ra một số thủ tục rằng một trong hai xác định kết quả của một -sided chết - có nghĩa là, một phần tử của --hoặc báo cáo khác thất bại (có nghĩa là bạn sẽ phải lặp lại nó để có được một kết quả). Đó là,t tm mc ( = 150 ) c(=150)Ω ( c , m )Ω(c,m)

t : Ω ( d , n ) Ω ( c , m ) { Không } .

t:Ω(d,n)Ω(c,m){Failure}.

Đặt là xác suất dẫn đến thất bại và lưu ý rằng là bội số nguyên của giả sửF Ft tF Fd - n ,dn,

F = Pr ( t ( ω ) = Thất bại ) = N Fd - n .

F=Pr(t(ω)=Failure)=NFdn.

(Để tham khảo trong tương lai, lưu ý rằng số lần dự kiến phải được gọi trước khi không thất bại là )t t1 / ( 1 - F ) .1/(1F).

Yêu cầu rằng những kết quả trong được thống nhất và độc lập có điều kiện trên không báo cáo phương tiện thất bại mà bảo tồn khả năng theo nghĩa là cho mỗi sự kiệnΩ ( c , m ) Ω(c,m)t t AΩ ( c , m ) ,ttAΩ(c,m),

P d , n ( t A )1 - F =Pc,m(A)

Pd,n(tA)1F=Pc,m(A)(1)

Ở đâu

t ( A ) = { ω Ω t ( ω ) A }

t(A)={ωΩt(ω)A}

là tập hợp các cuộn chết mà quy trình gán cho sự kiệnt tMột .A.

Hãy xem xét một sự kiện nguyên tử , phải có xác suấtĐặt (các cuộn súc sắc được liên kết với ) có các phần tử . trở thànhA = { η } Ω ( c , m ) A={η}Ω(c,m)c - m .cm.t ( A )t(A) η ηN ηNη ( 1 )(1)

N η d - n1 - N F d - n = P d , n ( t A )1 - F =Pc,m(A)=c-m.

Nηdn1NFdn=Pd,n(tA)1F=Pc,m(A)=cm.(2)

Ngay lập tức rằng đều bằng một số nguyênN ηNη N . N. Chỉ còn để tìm các thủ tục hiệu quả nhất Số lượng dự kiến của phi thất bại mỗi cuộn của đứng về phía chếtt. t.cc

1m (1-F).

1m(1F).

Có hai hàm ý ngay lập tức và rõ ràng. Một là nếu chúng ta có thể giữ nhỏ khi phát triển lớn, thì hiệu quả của việc báo cáo lỗi là không có triệu chứng. Khác là với bất kỳ cho nào (số lượng cuộn của khuôn side để mô phỏng), chúng tôi muốn làm cho càng nhỏ càng tốt.F Fm mm mc cFF

Chúng ta hãy xem xét kỹ hơn bằng cách xóa mẫu số:( 2 )(2)

N c m = d n - N F > 0.

Ncm=dnNF>0.

Điều này cho thấy rõ rằng trong một bối cảnh nhất định (được xác định bởi ), được tạo ra càng nhỏ càng tốt bằng cách làm cho bằng bội số lớn nhất của nhỏ hơn hoặc bằng Chúng tôi có thể viết điều này theo hàm số nguyên lớn nhất (hoặc "sàn") nhưc , d , n , m c,d,n,mF Fd n - N F dnNFc m cmd n . dn.*

N = d nc m.

N=dncm.

Cuối cùng, rõ ràng nên càng nhỏ càng tốt để đạt hiệu quả cao nhất, bởi vì nó đo lường sự dư thừa trong . Cụ thể, số lượng cuộn dự kiến ​​của khuôn -ided cần thiết để tạo ra một cuộn của khuôn side làN Nt d ctdc

N × nm ×11 - F .

N×nm×11F.

Do đó, việc tìm kiếm các quy trình hiệu quả cao của chúng tôi phải tập trung vào các trường hợp trong đó bằng hoặc chỉ lớn hơn một chút so với sức mạnhd n dnc m .cm.

Phân tích kết thúc bằng cách chỉ ra rằng với và có một chuỗi bội số mà cách tiếp cận này xấp xỉ hiệu quả hoàn hảo. Số tiền này để tìm trong đó tiếp cận trong giới hạn (tự động đảm bảo ). Một chuỗi như vậy có được bằng cách lấy và xác địnhd dc , c,( n , m ) (n,m)( n , m ) (n,m)d n / c m1 dn/cm1N = 1 N=1F 0 F0n = 1 , 2 , 3 , Đổn=1,2,3,

m = log n log dlog c.

m=nlogdlogc.(3)

Bằng chứng là đơn giản.

Tất cả điều này có nghĩa là khi chúng ta sẵn sàng tung ra cái chết -ided ban đầu với số lần đủ lớn chúng ta có thể mong đợi mô phỏng gần như kết quả của một cái chết có mặt trên mỗi cuộn . Tương đương,d dn , n,log d / log c = log c d logd/logc=logcdcc

Có thể mô phỏng một số lượng lớn của cuộn độc lập của một -sided chết bằng một hội chợ -sided chết bằng mức trung bình của cuộn cho mỗi kết quả trong đó có thể được tạo nhỏ tùy ý bằng cách chọn đủ lớn.m mc cd dlog ( c ) / log ( d ) + ϵ = log d ( c ) + ϵ log(c)/log(d)+ϵ=logd(c)+ϵϵ ϵmm


Ví dụ và thuật toán

Trong câu hỏi, và từ đâud = 6 d=6c = 150 ,c=150,

log d ( c ) = log ( c )log ( d )2.796361.

logd(c)=log(c)log(d)2.796489.

Do đó, trung bình, quy trình tốt nhất có thể sẽ yêu cầu, trung bình ít nhất cuộn a để mô phỏng từng kết quả.2.7963612.796489d6d150

Các phân tích cho thấy làm thế nào để làm điều này. Chúng ta không cần phải dùng đến lý thuyết số để thực hiện nó: chúng ta chỉ có thể lập bảng các quyền hạn và các quyền lực và so sánh chúng để tìm nơi gần gũi. Tính toán lực lượng vũ phu này cho các cặpd n = 6 n dn=6nc m = 150 m cm=150mc md ncmdn ( n , m )(n,m)

( N , m ) { ( 3 , 1 ) , ( 14 , 5 ) , ... }

(n,m){(3,1),(14,5),}

ví dụ, tương ứng với các số

( 6 n , 150 m ) { ( 216 , 150 ) , ( 78364164096 , 75937500000 ) , ... } .

(6n,150m){(216,150),(78364164096,75937500000),}.

Trong trường hợp đầu tiên, sẽ liên kết trong số các kết quả của ba lần thất bại và kết quả khác sẽ liên quan đến một kết quả duy nhất của a . t t216 - 150 = 66 216150=66d6150150d150

Trong trường hợp thứ hai, sẽ liên kết về kết quả của 14 lần thất bại - khoảng 3,1% trong số đó - và nếu không sẽ tạo ra chuỗi 5 kết quả của a .t t78364164096 - 759375000007836416409675937500000d6d150

Một thuật toán đơn giản để thực hiệntt nhãn các mặt của khuôn mặt mặt số và các mặt của khuôn mặt với các mặt số Các cuộn của chết đầu tiên được hiểu là một số -digit trong cơ sở Điều này được chuyển đổi thành một số trong cơ sở Nếu nó có nhiều nhất chữ số, chuỗi các chữ số cuối cùng là đầu ra. Mặt khác, trả về Thất bại bằng cách gọi đệ quy chính nó. d d0 , 1 , Vay , d - 1 0,1,,d1c c0 , 1 , Rời , c - 1. 0,1,,c1.n nn nd . d.c . c.m mm mtt

Đối với các chuỗi dài hơn nhiều, bạn có thể tìm thấy các cặp phù hợp bằng cách xem xét mọi hội tụ khác của việc mở rộng phân số tiếp tục của Lý thuyết về phân số tiếp tục cho thấy các điểm hội tụ này xen kẽ giữa nhỏ hơn và lớn hơn nó (giả sử chưa hợp lý). Chọn những cái nhỏ hơn( n , m ) ( n , m )n / m n / mx = log ( c ) / log ( d ) . x=log(c)/log(d).x xx xx .x.

Trong câu hỏi, một số hội tụ đầu tiên như vậy là

3 , 14 / 5 , 165 / 59 , 797 / 285 , 4301 / 1538 , 89.043 / 31.841 , 279.235 / 99.852 , 29.036.139 / 10.383.070 ... .

3,14/5,165/59,797/285,4301/1538,89043/31841,279235/99852,29036139/10383070.

Trong trường hợp cuối cùng, một chuỗi 29.036.139 cuộn a d6sẽ tạo ra một chuỗi 10.383.070 cuộn của a d150với tỷ lệ thất bại nhỏ hơn cho hiệu quả phân biệt được với giới hạn tiệm cận.2 × 10 - 8 , 2×108,2.796492.79649


2
Thật tuyệt vời như mọi khi, có vẻ như câu trả lời này đã được định dạng và chuẩn bị ngay cả trước khi câu hỏi được hỏi!
Łukasz Tốt nghiệp

1
Cảm ơn bạn, @ ukaszGrad. Tuy nhiên, tôi vô tội với bất kỳ mưu mô nào như vậy và tôi chắc chắn những độc giả tinh mắt sẽ tìm thấy bằng chứng về sự vội vàng mà tôi đã viết ra điều này, và tôi xin lỗi trước.
whuber

Không nên tính đến việc khi không phải là số nguyên tố, không gian mẫu có thể được phân chia thành các tập hợp con có xác suất bằng nhau không? Ví dụ: bạn có thể sử dụng d6 làm d2 hoặc d3 và không gian mẫu với 162 phần tử - gần với 150 hơn 216 - sau đó có thể đạt được với 4 cuộn, 1d6 + 3d3. (Điều đó mang lại cùng một cuộn số dự kiến ​​như giải pháp 3d6, nhưng phương sai thấp hơn.)d Ω ( d , 1 )dΩ(d,1)
Scortchi - Tái lập Monica

@Scortchi Bạn mô tả một cài đặt hơi khác trong đó người ta có lựa chọn xúc xắc để sử dụng để mô phỏng các lần rút từ phân phối đồng đều. Một phân tích tương tự được áp dụng - bạn có thể thấy thật thú vị khi thực hiện nó.
whuber

7

Đối với trường hợp , việc lăn một d6 ba lần rõ ràng sẽ tạo ra kết quả.N = 150 N=1506 3 = 21663=216

Kết quả mong muốn có thể được lập bảng theo cách này:

  • Ghi lại một d6 ba lần liên tiếp. Điều này tạo ra kết quả . Kết quả là đồng nhất vì tất cả các giá trị của đều có khả năng như nhau (xúc xắc là công bằng và chúng tôi đang coi mỗi cuộn là khác biệt).a , b , c a,b,ca , b , ca,b,c
  • Trừ 1 từ mỗi.
  • Đây là số senary: mỗi chữ số (giá trị vị trí) đi từ 0 đến 5 theo lũy thừa 6, vì vậy bạn có thể viết số đó bằng số thập phân bằng cách sử dụng( a - 1 ) × 6 2 + ( b - 1 ) × 6 1 + ( c - 1 ) × 6 0
    (a1)×62+(b1)×61+(c1)×60
  • Thêm 1.
  • Nếu kết quả vượt quá 150, loại bỏ kết quả và cuộn lại.

Xác suất giữ kết quả là . Tất cả các cuộn là độc lập và chúng tôi lặp lại quy trình cho đến khi "thành công" (kết quả là ), vì vậy số lần thử tạo 1 lần rút giữa 1 và 150 được phân phối dưới dạng biến ngẫu nhiên hình học, trong đó có kỳ vọng . Do đó, sử dụng phương pháp này để tạo 1 lần rút yêu cầu cán cuộn xúc xắc trung bình (vì mỗi lần thử cuộn 3 con xúc xắc).p = 150216 =2536p=150216=2536 1,2,ĐI,1501,2,,150p - 1 = 3625p1=3625 3625 ×3=4,323625×3=4.32


Tín dụng cho @whuber để đề xuất điều này trong trò chuyện.


Tôi tin rằng phương pháp của Henry không tạo ra sự phân phối đồng đều. Đó là bởi vì việc tái chế sẽ khiến một số chữ số được ưa chuộng. Tôi không hoàn toàn chắc chắn về điều đó bởi vì tôi không hoàn toàn hiểu cách tái chế dự định sẽ được thực hiện.
whuber

1
@whuber AH! Tôi hiểu mối quan tâm của bạn bây giờ. Tôi chỉ cố gắng giải thích quy trình cho chính mình và tôi nhận ra lý do tại sao trực giác của mình bị sai sót: xác suất lăn thêm một con súc sắc có thể thay đổi việc gán xác suất thành số thập phân và làm cho nó không đồng nhất vì chúng ta không biết trước nhiều xúc xắc chúng ta đang lăn
Sycorax nói Phục hồi lại

4

Dưới đây là một thay thế thậm chí đơn giản hơn cho câu trả lời của Sycorax cho trường hợp . Vì bạn có thể thực hiện quy trình sau:N = 150 N=150150 = 5 × 5 × 6150=5×5×6

Tạo số ngẫu nhiên thống nhất từ ​​1 đến 150:

  • Thực hiện ba cuộn 1D6 theo thứ tự và biểu thị chúng là .R 1 , R 2 , R 3R1,R2,R3
  • Nếu một trong hai cuộn đầu tiên là sáu, hãy chạy lại cho đến khi không phải là 6.
  • Số là số thống nhất sử dụng ký hiệu vị trí có cơ số 5-5-6. Do đó, bạn có thể tính số mong muốn là: ( R 1 , R 2 , R 3 ) (R1,R2,R3)X = 30 ( R 1 - 1 ) + 6 ( R 2 - 1 ) + ( R 3 - 1 ) + 1.
    X=30(R11)+6(R21)+(R31)+1.

Phương pháp này có thể được khái quát thành lớn hơn , nhưng nó trở nên khó xử hơn một chút khi giá trị có một hoặc nhiều thừa số nguyên tố lớn hơn .N N66


1
Bạn có thể nói hiệu quả của phương pháp này theo số lượng cuộn dự kiến ​​cho mỗi lần rút được tạo ra không, và làm rõ lý do tại sao kết quả là thống nhất trên 1,2, ...., 150?
Sycorax nói Phục hồi lại

Xác suất nhận được một kết quả không yêu cầu quay lại là , giống như trong câu trả lời của bạn. Để hiểu lý do tại sao nó là đồng nhất, lưu ý rằng bạn thực sự chỉ tạo một số thống nhất bằng cách sử dụng ký hiệu vị trí với cơ số 5-5-6 (nghĩa là chữ số cuối cùng là các đơn vị, chữ số cuối cùng là "sáu" và số thứ ba chữ số lớn là "tuổi ba mươi"). 25 / 3625/36
Phục hồi

1
Phương pháp này thực sự chỉ là một biến thể rất nhỏ trong phương thức trong câu trả lời của bạn. Trong câu trả lời của bạn, bạn tạo một số thống nhất trên thang số 6-6-6, sau đó loại bỏ các giá trị không hợp lệ, trong khi trong câu trả lời của tôi, bạn loại bỏ các giá trị không hợp lệ trước để tạo một số theo tỷ lệ 5-5-6.
Phục hồi lại

3
+1 Như một vấn đề thực tế, đây là một thuật toán hấp dẫn. Đó là hấp dẫn, và có lẽ gợi ý về một phân tích rộng hơn, rằng nó thực hiện một máy tự động trạng thái hữu hạn được điều khiển bởi các cuộn chết. Nó có bốn trạng thái, {Bắt đầu, A, B, Chấp nhận}. Bắt đầu chuyển đổi sang A khi lăn 1..5; A chuyển sang B khi lăn 1..5; và B chuyển sang Chấp nhận khi lăn bất cứ thứ gì. Mỗi lần chuyển đổi sẽ lưu giá trị của cuộn đã gây ra, do đó, khi đạt tới Chấp nhận, bạn xuất chuỗi ba cuộn được lưu trữ đó và tự động chuyển trở lại Bắt đầu.
whuber

4
Bạn từ chối thường xuyên như @Sycorax, nhưng trung bình tạo ra ít cuộn hơn. Dự kiến ​​không có. cuộn trên mỗi phương sai là . 65 +65 +1=3,465+65+1=3.4
Scortchi - Phục hồi Monica

2

Như một minh họa cho thuật toán chọn thống nhất giữa giá trị bằng cách sử dụng xúc xắc sáu mặt, hãy thử phương pháp này sử dụng mỗi cuộn để nhân các giá trị có sẵn với và làm cho mỗi giá trị mới có khả năng như nhau:150 15066

  • Sau cuộn, bạn có khả năng, không đủ để phân biệt giá trị0 01 1150150
  • Sau cuộn, bạn có khả năng, không đủ để phân biệt giá trị1 16 6150150
  • Sau cuộn, bạn có khả năng, không đủ để phân biệt giá trị2 236 36150150
  • Sau cuộn, bạn có khả năng, đủ để phân biệt giá trị nhưng với giá trị còn lại; xác suất bạn dừng ngay bây giờ là3 3216 216150 15066 66150216150216
  • Nếu bạn chưa dừng lại, thì sau cuộn, bạn có khả năng còn lại, đủ để phân biệt giá trị theo hai cách nhưng với giá trị còn lại; xác suất bạn dừng ngay bây giờ là4 4396 396150 15096 9630012963001296
  • Nếu bạn chưa dừng lại, thì sau cuộn, bạn có khả năng còn lại, đủ để phân biệt giá trị theo ba cách nhưng với giá trị còn lại; xác suất bạn dừng ngay bây giờ là5 5576 576150 15096 9645077764507776
  • Nếu bạn chưa dừng lại, thì sau cuộn, bạn có khả năng còn lại, đủ để phân biệt giá trị theo năm cách nhưng với giá trị còn lại; xác suất bạn dừng ngay bây giờ là6 6756 756150 1506 67504665675046656

Nếu bạn đang ở một trong giá trị còn lại sau cuộn thì bạn đang ở trong tình huống tương tự với vị trí sau cuộn. Vì vậy, bạn có thể tiếp tục theo cách tương tự: xác suất bạn dừng sau cuộn là , sau cuộn là v.v.6 66 61 17 702799360279936 8815016796161501679616

Thêm những thứ này và bạn thấy rằng số lượng cuộn cần thiết là khoảng . Nó cung cấp lựa chọn thống nhất từ , vì bạn chỉ chọn một giá trị tại một thời điểm khi bạn có thể chọn từng giá trị với xác suất bằng nhau3.39614 3.39614150 150150150


Sycorax hỏi trong các ý kiến ​​cho một thuật toán rõ ràng hơn

  • Đầu tiên, tôi sẽ làm việc trong cơ sở với6 6150 10 = 410 615010=4106
  • Thứ hai, thay vì các giá trị đích đến , tôi sẽ trừ đi một giá trị để các giá trị đích là đến1 6 16410 6 41060 6 06409 64096
  • Thứ ba, mỗi khuôn nên có các giá trị đến và việc lăn một con liên quan đến việc thêm một chữ số cơ sở vào phía bên phải của số được tạo hiện có. Các số được tạo có thể có các số 0 đứng đầu và số chữ số của chúng là số cuộn cho đến nay0 6 065 6 6

Thuật toán là cuộn xúc xắc liên tiếp:

  • Cuộn ba con xúc xắc đầu tiên để tạo ra một số từ đến . Vì bạn lấy giá trị được tạo (cũng là phần còn lại của nó khi chia cho ) nếu giá trị được tạo nằm dưới và dừng lại;000 6 555 6 1000 6 ÷ 410 6 = 1 6  còn lại  150 6 410 6 1000 6 - 150 6 = 410 6

  • Nếu tiếp tục, hãy lăn con thứ tư để bây giờ bạn đã tạo một số từ đến . Vì bạn lấy phần còn lại của giá trị được tạo trên phép chia cho nếu giá trị được tạo nằm dưới và dừng lại;4100 6 5555 6 10000 6 ÷ 410 6 = 12 6  còn lại  240 6 410 6 10000 6 - 240 6 = 5320 6

  • Nếu tiếp tục, hãy lăn con thứ năm để bây giờ bạn đã tạo được một số từ đến . Vì bạn lấy phần còn lại của giá trị được tạo trên phép chia cho nếu giá trị được tạo nằm dưới và dừng lại;5320065555561000006÷4106=1236 remainder 3306410610000063306=552306

  • Nếu tiếp tục, hãy lăn con thứ sáu để bây giờ bạn đã tạo một số từ đến . Vì bạn lấy phần còn lại của giá trị được tạo trên chia cho nếu giá trị được tạo nằm dưới và dừng lại;5523006555555610000006÷4106=12356 remainder 106410610000006106=5555506

  • Vân vân.


(+1) Câu trả lời này sẽ rõ ràng hơn nếu bạn giải thích cách bạn ánh xạ kết quả của, giả sử, 4d6 hoặc 5d6 đến 1,2, ..., 150.
Sycorax nói Phục hồi lại

@Sycorax - Hiện tại tôi đã cung cấp ánh xạ cơ sở6
Henry

1
Cân nhắc Entropy cho thấy bạn có thể làm tốt hơn đáng kể so với thuật toán này. Nó vẫn còn cho thấy rằng thuật toán của bạn thực sự tạo ra các giá trị phân phối độc lập với các phân phối đồng đều .
whuber

@whuber - Thuật toán của tôi tạo ra chính xác một số nguyên từ khả năng và do đó cung cấp đồng đều các cuộn súc sắc là đồng nhất và độc lập. Ở mỗi bước nếu đạt được, mỗi trong số giá trị đều có khả năng được chọn như nhau. Nó không tạo ra nhiều giá trị (không giống như câu trả lời của bạn)150150
Henry

1
Tôi đã hiểu nhầm ý của bạn, sau đó, khi viết "thuật toán là những con xúc xắc nối tiếp nhau". (Tôi nên đọc kỹ hơn.) Khi làm như vậy, có vẻ như thuật toán của bạn không tạo ra phân phối đồng đều, nhưng tôi không chắc vì tôi không thể tìm ra thuật toán chung được dự định là gì là. Sẽ thật tốt khi thấy một minh chứng rằng nó tạo ra các giá trị đồng nhất.
whuber
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.