Là từ chối lấy mẫu là cách duy nhất để có được một phân phối ngẫu nhiên thực sự thống nhất của các số ngẫu nhiên?


21

Giả sử rằng chúng ta có một trình tạo ngẫu nhiên xuất ra các số trong phạm vi với phân phối đồng đều và chúng ta cần tạo các số ngẫu nhiên trong phạm vi với phân phối đồng đều.[ 0 .. N - 1 ][0..R1][0..N1]

Giả sử và không chia đều ; để có được phân phối đồng đều thực sự, chúng ta có thể sử dụng phương pháp lấy mẫu từ chối :N RN<RNR

  • nếu là số nguyên lớn nhất sao chok N < RkkN<R
  • chọn một số ngẫu nhiên trong[ 0 .. R - 1 ]r[0..R1]
  • nếu thì xuất ra , nếu không thì hãy thử với các số ngẫu nhiên khác r ', r ", ... cho đến khi điều kiện được đáp ứngrr<kNrmodN
Là từ chối lấy mẫu là cách duy nhất để có được một phân phối rời rạc thực sự thống nhất?

Nếu câu trả lời là có, tại sao?

Lưu ý: nếu thì ý tưởng là như nhau: tạo số ngẫu nhiên trong , ví dụ trong đó là một số ngẫu nhiên trong phạm vir ' [ 0 .. R m - 1 ] , R m > = N r ' = R ( . . . R ( R r 1 + r 2 ) . . . ) + R m r i [ 0 .. R - 1 ]N>Rr[0..Rm1],Rm>=Nr=R(...R(Rr1+r2)...)+rmri[0..R1]


Câu trả lời:


13

Có và không, tùy thuộc vào ý của bạn bởi cách mà thôi. Có, trong đó không có phương pháp nào được đảm bảo chấm dứt, cách tốt nhất bạn có thể làm (đối với các giá trị chung của và ) là một thuật toán kết thúc với xác suất 1. Không, trong đó bạn có thể làm cho chất thải của Thiêu là nhỏ như bạn thíchRNR

Tại sao nói chung chấm dứt bảo đảm là không thể

Giả sử rằng bạn có một động cơ tính toán xác định (một máy Turing hay bất cứ điều gì nổi thuyền của bạn), cộng với một lời sấm mà tạo ra các yếu tố ngẫu nhiên của bộ -element . Mục tiêu của bạn là tạo ra một phần tử của tập -element . Đầu ra của động cơ của bạn chỉ phụ thuộc vào chuỗi các giá trị được trả về bởi nhà tiên tri; đó là một hàm của chuỗi có khả năng vô hạn đó .[ 0 .. R - 1 ] N [ 0 , N - 1 ] f ( r 0 , r 1 , r 2 , Lối )R[0..R1]N[0,N1]f(r0,r1,r2,)

Giả sử rằng động cơ của bạn gọi nhà tiên tri nhiều nhất là lần. Có thể có dấu vết mà nhà tiên tri được gọi ít hơn lần; nếu vậy, việc gọi orory thêm lần để nó luôn được gọi chính xác là lần không làm thay đổi đầu ra. Vì vậy, không mất tính tổng quát, chúng tôi giả định rằng nhà tiên tri được gọi chính xác là lần. Khi đó xác suất của kết quả là số lượng chuỗi sao cho . Vì nhà tiên tri là một máy phát ngẫu nhiên đồng nhất, mỗi chuỗi có thể được trang bị và có xác suất . Do đó xác suất của mỗi kết quả có dạngm m m x ( r 0 , ... , r m - 1 ) f ( r 0 , ... , r m - 1 ) = x 1 / R m Một / R m Một 0 R mmmmmx(r0,,rm1)f(r0,,rm1)=x1/RmA/RmTrong đó là một số nguyên nằm trong khoảng từ đến .A0Rm

Nếu chia cho một số , thì bạn có thể tạo phân phối đồng đều trên phần tử bằng cách gọi bộ tạo ngẫu nhiên lần (điều này được để lại như một bài tập cho người đọc). Nếu không, điều này là không thể: không có cách nào để có được một kết quả với xác suất . Lưu ý rằng điều kiện này tương đương với việc nói rằng tất cả các yếu tố chính của cũng là các yếu tố của (điều này dễ dàng hơn so với những gì bạn đã viết trong câu hỏi của mình; ví dụ: bạn có thể chọn một yếu tố ngẫu nhiên trong số 4 với hội chợ 6 mặt chết, mặc dù 4 không chia 6).R m m N m 1 / N N RNRmmNm1/NNR

Giảm chất thải

Trong chiến lược của bạn, khi , bạn không phải vẽ lại ngay lập tức. Theo trực giác, có một chút entropy còn lại trong mà bạn có thể giữ trong hỗn hợp.[ krkN[kN..R1]

Giả sử trong một khoảnh khắc rằng trên thực tế bạn sẽ tiếp tục tạo các số ngẫu nhiên dưới mãi mãi và bạn tạo ra của chúng tại một thời điểm bằng cách thực hiện rút thăm . Nếu bạn thực hiện lấy mẫu từ chối đơn giản trên thế hệ được nhóm này, chất thải trên rút ra là , tức là phần còn lại chia cho số lần rút. Điều này có thể ít như . Khi và là nguyên tố cùng nhau, bạn có thể làm cho chất thải nhỏ tùy ý bằng cách chọn các giá trị đủ lớn của . Đối với các giá trị chung của vàu d d R d - kNudd RdmodNugcd(R,N)RdkNudRdmodNugcd(R,N)N dRNdN gcd ( R , N ) N / gcd ( R , N )RN, việc tính toán phức tạp hơn vì bạn cần tính đến việc tạo và một cách riêng biệt, nhưng một lần nữa bạn có thể tạo ra chất thải nhỏ tùy ý với các nhóm đủ lớn.gcd(R,N)N/gcd(R,N)

Trong thực tế, ngay cả với các số ngẫu nhiên tương đối không hiệu quả (ví dụ như trong mật mã học), hiếm khi làm bất cứ điều gì ngoại trừ lấy mẫu từ chối đơn giản, trừ khi nhỏ. Ví dụ, trong mật mã học, trong đó thường có công suất 2 và thường là hàng trăm hoặc hàng nghìn bit, việc tạo số ngẫu nhiên thống nhất thường được tiến hành bằng cách lấy mẫu từ chối thẳng trong phạm vi mong muốn.R NNRN


Bằng chứng đầu tiên là thiếu sót: sự tồn tại của quá mạnh. Chúng ta có thể có một máy tiêu thụ nhiều yếu tố tùy ý, nhưng luôn chấm dứt. Về cơ bản, chúng tôi muốn loại trừ một chuỗi (không bao giờ kết thúc) nhưng bạn loại trừ tất cả nhưng rất nhiều. m
Raphael

@Raphael Tôi không chắc là tôi hiểu ý của bạn. Bạn có thể cho một ví dụ máy như vậy?
Gilles 'SO- ngừng trở nên xấu xa'

Ah, mối quan tâm của tôi quá chung chung. Ở đây - với sự vắng mặt của đầu vào - bạn đã đúng. Nếu tất cả các tính toán chấm dứt, có rất nhiều quyết định (không có đầu vào, số lượng quyết định hữu hạn trên mỗi bước, ergo một cây hữu hạn), do đó có một thời gian dài nhất cung cấp cho bạn . m
Raphael

@Raphael Nhận xét của bạn khiến tôi nghĩ đến một bài thuyết trình tốt hơn cho khán giả TCS: biến RNG thành đầu vào của một TM thay vì một lời sấm truyền. Chúng tôi giả định rằng TM chấm dứt (nếu không thuật toán không chính xác). Nếu có một như rằng bất cứ đầu vào là, trông TM tại ở hầu hết các ô nhập liệu, sau đó <blah blah chia hết cho blah không thể có equiprobable kết quả>. Mặt khác, với tất cả , xác suất yêu cầu ít nhất rút ra ít nhất là . m R m N m m R - mmmRmNmmRm
Gilles 'SO- ngừng trở nên xấu xa'

1
@Raphael: Bổ đề của König cho thấy rằng nếu máy luôn luôn chấm dứt, thì thực tế có giới hạn trên về thời gian hoạt động của nó. Điều này hoạt động miễn là bộ đầu ra của RNG là hữu hạn (và nếu không, nó là tầm thường sai).
Yuval Filmus

6

Định lý mã hóa nguồn của Shannon cho thấy, trong một số ý nghĩa chính xác, bạn cần mẫu (trung bình) của loại để tạo số ngẫu nhiên của loại . Chính xác hơn, Shannon đưa ra thuật toán (không hiệu quả) đưa ra mẫu của loại thứ nhất, đưa ra các mẫu của loại thứ hai, với xác suất cao. Ông cũng chỉ ra rằng việc xuất ra các mẫu với xác suất cao là không thể.[ 0 , ... , R - 1 ] [ 0 , ... , N - 1 ] m m ( log N / log R - ε ) m ( log N / log R + ε )logN/logR[0,,R1][0,,N1]mm(logN/logRϵ)m(logN/logR+ϵ)

Định lý của Shannon cũng hoạt động trong trường hợp tổng quát hơn về phân phối đầu vào bị lệch (và có lẽ cũng phân phối đầu ra bị lệch). Trong trường hợp đó, bạn cần thay thế logarit bằng entropy. Mặc dù thuật toán được đưa ra bởi định lý được xác định ngẫu nhiên, trong một số trường hợp có thể giải mã nó (với chi phí hiệu năng kém hơn một chút).


5

Trên thực tế, không, lấy mẫu từ chối là cách duy nhất để tiến hành. Thật không may, vì các máy tính lưu trữ tất cả thông tin dưới dạng bit và do đó chỉ có thể thao tác các bit thông tin ngẫu nhiên, bất kỳ thuật toán nào để vẽ một biến ngẫu nhiên thống nhất của phạm vi sẽ là vô hạn, nếu sự phát triển cơ sở nhị phân của là vô hạn.NNN

Định lý này là kết quả cổ điển của Knuth và Yao (1976), người đã phát triển khuôn khổ của cây DDG (cây tạo phân phối rời rạc).

Các phương pháp được Gilles trưng bày là loại điều điển hình đã được thực hiện để giảm thiểu chất thải phát sinh do từ chối, nhưng tất nhiên nếu người ta có thể tạo ra theo cây Knuth và Yao thì hiệu quả hơn nhiều - trung bình 96% bit ngẫu nhiên được lưu.

Tôi đã cung cấp thêm thông tin về điều này trong bài CStheory sau đây .

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.