ফেয়ার ডি 6 ব্যবহার করে 1 থেকে


18

আমি কিছু নির্দিষ্ট 1 থেকে ইন্টিজার আঁকা করতে ইচ্ছুক এনN কিছু (d6) মেলা ছয় একতরফা পাশা সংখ্যা ঘূর্ণায়মান দ্বারা। একটি ভাল উত্তর ব্যাখ্যা করবে যে এর পদ্ধতিটি কেন অভিন্ন এবং স্বতন্ত্র পূর্ণসংখ্যার উত্পাদন করে ।

উদাহরণস্বরূপ উদাহরণ হিসাবে, এর ক্ষেত্রে সমাধান কীভাবে কাজ করে তা ব্যাখ্যা করা সহায়ক হবে ।N=150N=150

তদুপরি, আমি প্রক্রিয়াটি যথাসম্ভব দক্ষ হওয়ার জন্য কামনা করছি: উত্পন্ন প্রতিটি সংখ্যার জন্য গড়ে সর্বনিম্ন ডি -6 রোল করুন।

সেনারি থেকে দশমিক রূপান্তরগুলি অনুমোদিত iss


এই প্রশ্নটি এই মেটা থ্রেড দ্বারা অনুপ্রাণিত হয়েছিল

উত্তর:


12

সেট Ω ( , এন )Ω(d,n) মধ্যে স্বতন্ত্র শনাক্তযোগ্য ফলাফল এর এনn সঙ্গে একটি ডাই স্বাধীন রোলস = 6d=6 মুখমন্ডল হয়েছে Ndn উপাদান। যখন ডাই সুষ্ঠু হয়, তার অর্থ একটি রোলের প্রতিটি ফলাফলের সম্ভাব্যতা 1 / d হয়1/d এবং স্বাধীনতার অর্থ এই ফলাফলগুলির প্রত্যেকটিরই সম্ভাবনা থাকে ( 1 / d ) এন :(1/d)n: অর্থাৎ, তাদের অভিন্ন বিতরণ থাকে পি ডি , এনPd,n.

ধরুন আপনি একটি পদ্ধতি টিt তৈরি করেছেন যা হয় সি ( = 150 ) -র পাশের ডাইয়ের এমm ফলাফলগুলি নির্ধারণ করে - এটি Ω ( সি , মি ) এর একটি উপাদান - অথবা অন্যথায় ব্যর্থতার রিপোর্ট করে (যার অর্থ আপনাকে পুনরাবৃত্তি করতে হবে এটি একটি ফলাফল পেতে)। এটাই,c(=150)Ω(c,m)

T : Ω ( , এন ) Ω ( , মি ) { ব্যর্থ }

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

যাক এফF সম্ভাব্যতা হতে টনt ব্যর্থতা এবং নোটে ফলাফল এফF কিছু অবিচ্ছেদ্য একাধিক হয় - এন ,dn, বলে

এফ = Pr ( T ( ω ) = ব্যর্থতা ) = এন এফd - n

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

(ভবিষ্যতে উল্লেখের জন্য, নোট সময়ের প্রত্যাশিত সংখ্যা টিt ব্যর্থ আগে কখনও নয় প্রার্থনা করতে হয় 1 / ( 1 - এফ ) 1/(1F). )

প্রয়োজন যে এই ফলাফল Ω ( , মি )Ω(c,m) অভিন্ন ও স্বাধীন হতে শর্তসাপেক্ষ উপর টিt ব্যর্থতা মানে প্রতিবেদন না যে Tt অর্থে সংরক্ষণ সম্ভাব্যতা যে প্রতি ইভেন্টের জন্য একটি ⊂ -এর সাথে Ω ( , মি ) ,AΩ(c,m),

পি ডি , এন ( টি )1 - এফ =পিসি,মি()

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

কোথায়

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

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

প্রক্রিয়া টিt ইভেন্ট এ এর জন্য নির্ধারিত ডাই রোলসের সেট A.

একটি পারমাণবিক ইভেন্ট = { η } Ω ( সি , মি ) বিবেচনা করুনA={η}Ω(c,m) , যার অবশ্যই সম্ভাবনা সি - এম হতে হবেcm.যাক টি * ( একটি )t(A) (সঙ্গে যুক্ত পাশা রোলস ηη ) থাকতে এন ηNη উপাদান। ( 1 )(1) হয়ে যায়

N η d - n1 - N F d - n = P d , n ( t A )1 - এফ =পিসি,এম()=সি-মি

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

এটা যে অবিলম্বে হয় এন ηNη সব পূর্ণসংখ্যা কিছু সমান এন N. এটা তোলে সবচেয়ে বেশি কার্যকরী পদ্ধতি এটি শুধুমাত্র অবশেষ টি t. অ ব্যর্থতা প্রত্যাশিত সংখ্যা রোল প্রতি c পক্ষ ডাই হয়

1মি (1-এফ)

1m(1F).

দুটি তাত্ক্ষণিক এবং সুস্পষ্ট প্রভাব আছে। যে যদি আমরা বজায় রাখার ইচ্ছা থাকে ফাঃF হিসাবে ক্ষুদ্র মিm বৃহৎ বৃদ্ধি, তারপর একটি ব্যর্থতা প্রতিবেদন প্রভাব এসিম্পটোটিকভাবে শূন্য। অন্য কোনো দেওয়া হয় মিm (এর রোলস সংখ্যা c মারা পার্শ্বযুক্ত অনুকরণ), আমরা করতে চাই এফF সম্ভব ছোট হিসাবে।

আসুন ( 2 )(2) ডিনোমিনেটরগুলি সাফ করে নিবিড় পর্যালোচনা করা যাক :

এন সি এম = ডি এন - এন এফ > 0।

Ncm=dnNF>0.

এটি সুস্পষ্ট যে একটি প্রদত্ত প্রেক্ষাপটে (দ্বারা নির্ধারিত , , এন , এমc,d,n,m ), এফF সম্ভব হিসাবে ছোট হিসাবে উপার্জন দ্বারা তৈরি করা হয় N - এন এফdnNF বৃহত্তম একাধিক সমান মিcm যে কম বা সমান এনdn. আমরা সর্বশ্রেষ্ঠ পূর্ণসংখ্যা ফাংশন পদ (বা "মেঝে") মধ্যে এই লিখতে পারে * যেমন

এন = ডি এনসি এম

N=dncm.

অবশেষে, এটা স্পষ্ট যে এনN কর্তব্য কারণ এটি পরিমাপ, সর্বোচ্চ দক্ষতা জন্য যতটা সম্ভব ছোট যেমন হতে অতিরেক মধ্যে টিt । বিশেষত, সি- সাইডড ডাইয়ের একটি রোল উত্পাদনের জন্য প্রয়োজনীয় ডি-d সাইড ডাইয়ের প্রত্যাশিত সংখ্যার রোলটি হ'লc

এন × এনমি ×11 - এফ

N×nm×11F.

সুতরাং, উচ্চ দক্ষতা পদ্ধতি জন্য আমাদের অনুসন্ধান ক্ষেত্র ফোকাস যেখানে কর্তব্য Ndn সমান, বা শুধু সবে চেয়ে, কিছু ক্ষমতা বেশী মিcm.

দেখাচ্ছে দেওয়া যে বিশ্লেষণ প্রান্ত d এবং ,c, সেখানে গুণিতক একটি ক্রম ( এন , মি )(n,m) , যার জন্য এই পদ্ধতির নিখুঁত দক্ষতা পরিমাপক। এটি সন্ধান করার পরিমাণ ( এন , এম )(n,m) যার জন্য ডি এন / সি এম1dn/cm1 সীমাতে এন = 1 এরN=1 কাছে পৌঁছেছে (স্বয়ংক্রিয়ভাবে এফ 0 এরF0 গ্যারান্টি দেওয়া )। এ জাতীয় একটি ক্রম n = 1 , 2 , 3 , গ্রহণ করে প্রাপ্ত হয়...n=1,2,3, এবং নির্ধারণ

m=nlogdlogc.

m=nlogdlogc.(3)

The proof is straightforward.

This all means that when we are willing to roll the original dd-sided die a sufficiently large number of times n,n, we can expect to simulate nearly logd/logc=logcdlogd/logc=logcd outcomes of a cc-sided die per roll. Equivalently,

লগ ( সি ) / লগ ( ডি ) + ϵ = লগ ডি ( সি ) + ϵ রোলগুলির গড় ব্যবহার করে একটি ন্যায্য ডি- পার্শ্বযুক্ত ডাই ব্যবহার করে একটি সি- সাইডড ডাইয়ের একটি বিশাল সংখ্যক এমm এর স্বতন্ত্র রোলগুলি সিমুলেট করা সম্ভব per ফলাফল যেখানে ϵ যথেষ্ট পরিমাণে মি নির্বাচন করে নির্বিচারে ছোট করা যায় ।cdlog(c)/log(d)+ϵ=logd(c)+ϵϵm


উদাহরণ এবং অ্যালগরিদম

প্রশ্নে, ডি = 6d=6 এবং সি = 150 ,c=150, কোথা থেকে

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

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

Thus, the best possible procedure will require, on average, at least 2.7964892.796489 rolls of a d6 to simulate each d150 outcome.

The analysis shows how to do this. We don't need to resort to number theory to carry it out: we can just tabulate the powers dn=6ndn=6n and the powers cm=150mcm=150m and compare them to find where cmdncmdn are close. This brute force calculation gives (n,m)(n,m) pairs

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

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

for instance, corresponding to the numbers

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

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

In the first case tt would associate 216150=66216150=66 of the outcomes of three rolls of a d6 to Failure and the other 150150 outcomes would each be associated with a single outcome of a d150.

In the second case tt would associate 78364164096759375000007836416409675937500000 of the outcomes of 14 rolls of a d6 to Failure -- about 3.1% of them all -- and otherwise would output a sequence of 5 outcomes of a d150.

A simple algorithm to implement tt labels the faces of the dd-sided die with the numerals 0,1,,d10,1,,d1 and the faces of the cc-sided die with the numerals 0,1,,c1.0,1,,c1. The nn rolls of the first die are interpreted as an nn-digit number in base d.d. This is converted to a number in base c.c. If it has at most mm digits, the sequence of the last mm digits is the output. Otherwise, tt returns Failure by invoking itself recursively.

For much longer sequences, you can find suitable pairs (n,m)(n,m) by considering every other convergent n/mn/m of the continued fraction expansion of x=log(c)/log(d).x=log(c)/log(d). The theory of continued fractions shows that these convergents alternate between being less than xx and greater than it (assuming xx is not already rational). Choose those that are less than x.x.

In the question, the first few such convergents are

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

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

In the last case, a sequence of 29,036,139 rolls of a d6 will produce a sequence of 10,383,070 rolls of a d150 with a failure rate less than 2×108,2×108, for an efficiency of 2.796492.79649--indistinguishable from the asymptotic limit.


2
Amazing as always, it almost looks like this answer was formatted and prepared even before the question was asked!
Łukasz Grad

1
Thank you, @ŁukaszGrad. However, I am innocent of any such machinations and I'm sure sharp-eyed readers will find evidence of the haste with which I have written this out, for which I apologize in advance.
whuber

Shouldn't it also be taken into account that when dd isn't prime, the sample space Ω(d,1)Ω(d,1) can be partitioned into subsets of equal probability? For example, you can use a d6 as a d2 or a d3, & a sample space with 162 elements - closer to 150 than 216 is - is then achievable with 4 rolls, 1d6+3d3. (That gives the same expected no. rolls as the 3d6 solution, but a lower variance.)
Scortchi - Reinstate Monica

@Scortchi You describe a slightly different setting in which one has a choice of dice to use to simulate draws from a uniform distribution. A similar analysis applies--you might find it amusing to carry it out.
whuber

7

For the case of N=150N=150, rolling a d6 three times distinctly creates 63=21663=216 outcomes.

The desired result can be tabulated in this way:

  • Record a d6 three times sequentially. This produces results a,b,ca,b,c. The result is uniform because all values of a,b,ca,b,c are equally likely (the dice are fair, and we are treating each roll as distinct).
  • Subtract 1 from each.
  • This is a senary number: each digit (place value) goes from 0 to 5 by powers of 6, so you can write the number in decimal using (a1)×62+(b1)×61+(c1)×60
    (a1)×62+(b1)×61+(c1)×60
  • Add 1.
  • If the result exceeds 150, discard the result and roll again.

The probability of keeping a result is p=150216=2536p=150216=2536. All rolls are independent, and we repeat the procedure until a "success" (a result in 1,2,,1501,2,,150) so the number of attempts to generate 1 draw between 1 and 150 is distributed as a geometric random variable, which has expectation p1=3625p1=3625. Therefore, using this method to generate 1 draw requires rolling 3625×3=4.323625×3=4.32 dice rolls on average (because each attempt rolls 3 dice).


Credit to @whuber to for suggesting this in chat.


I believe Henry's method does not produce a uniform distribution. That's because the recycling will cause some digits to be favored. I'm not completely sure about that because I don't completely understand how the recycling is intended to be performed.
whuber

1
@whuber AH! I understand your concern now. I just tried to explain the process to myself and I realized why my intuition was flawed: the probability of rolling an additional die may change the assignment of probabilities to decimal numbers and make it non-uniform because we don't know ahead of time how many dice we're rolling.
Sycorax says Reinstate Monica

4

Here is an even simpler alternative to the answer by Sycorax for the case where N=150N=150. Since 150=5×5×6150=5×5×6 you can perform the following procedure:

Generating uniform random number from 1 to 150:

  • Make three ordered rolls of 1D6 and denote these as R1,R2,R3R1,R2,R3.
  • If either of the first two rolls is a six, reroll it until it is not 6.
  • The number (R1,R2,R3)(R1,R2,R3) is a uniform number using positional notation with a radix of 5-5-6. Thus, you can compute the desired number as: X=30(R11)+6(R21)+(R31)+1.
    X=30(R11)+6(R21)+(R31)+1.

This method can be generalised to larger NN, but it becomes a bit more awkward when the value has one or more prime factors larger than 66.


1
Can you state the efficiency of this method in terms of the expected number of rolls per draw generated, and clarify why the outcome is uniform on 1,2,....,150?
Sycorax says Reinstate Monica

The probability of getting an outcome that requires no re-rolling is 25/3625/36, which is the same as in your answer. To understand why it is uniform, note that you are effectively just generating a uniform number using positional notation with radix 5-5-6 (i.e., the last digit is the units, the second-last digit is the "sixes" and the third-last digit is the "thirties").
Reinstate Monica

1
The method is effectively just a very slight variation on the method in your answer. In your answer you create a uniform number on the 6-6-6 number scale an then discard invalid values, whereas in my answer you discard invalid values first to generate a number on the 5-5-6 scale.
Reinstate Monica

3
+1 As a practical matter this is an appealing algorithm. It is intriguing, and perhaps suggestive of a broader analysis, that it implements a finite state automaton driven by the die rolls. It has four states, {Start, A, B, Accept}. Start transitions to A upon rolling 1..5; A transitions to B upon rolling 1..5; and B transitions to Accept upon rolling anything. Each transition saves the value of the roll that caused it, so upon reaching Accept you output that sequence of three stored rolls and transition automatically back to Start.
whuber

4
You reject as often as @Sycorax, but make fewer rolls on average. The expected no. rolls per variate is 65+65+1=3.465+65+1=3.4.
Scortchi - Reinstate Monica

2

As an illustration of an algorithm to choose uniformly between 150150 values using six-sided dice, try this which uses each roll to multiply the available values by 66 and making each of the new values equally likely:

  • After 00 rolls, you have 11 possibility, not enough to distinguish 150150 values
  • After 11 roll, you have 66 possibilities, not enough to distinguish 150150 values
  • After 22 rolls, you have 3636 possibilities, not enough to distinguish 150150 values
  • After 33 rolls, you have 216216 possibilities, enough to distinguish 150150 values but with 6666 remaining values; the probability you stop now is 150216150216
  • If you have not stopped, then after 44 rolls you have 396396 remaining possibilities, enough to distinguish 150150 values two ways but with 9696 remaining values; the probability you stop now is 30012963001296
  • If you have not stopped, then after 5 rolls you have 576 remaining possibilities, enough to distinguish 150 values three ways but with 96 remaining values; the probability you stop now is 4507776
  • If you have not stopped, then after 6 rolls you have 756 remaining possibilities, enough to distinguish 150 values five ways but with 6 remaining values; the probability you stop now is 75046656

If you are on one of the 6 remaining values after 6 rolls then you are in a similar situation to the position after 1 roll. So you can continue in the same way: the probability you stop after 7 rolls is 0279936, after 8 rolls is 1501679616 etc.

Add these up and you find that the expected number of rolls needed is about 3.39614. It provides a uniform selection from the 150, as you only select a value at a time when you can select each of the 150 with equal probability


Sycorax asked in the comments for a more explicit algorithm

  • First, I will work in base-6 with 15010=4106
  • Second, rather than target values 16 to 4106, I will subtract one so the target values are 06 to 4096
  • Third, each die should have values 06 to 56, and rolling a die involves adding a base 6 digit to the right hand side of the existing generated number. Generated numbers can have leading zeros, and their number of digits is the number of rolls so far

The algorithm is successive rolls of dice:

  • Roll the first three dice to generate a number from 0006 to 5556. Since 10006÷4106=16 remainder 1506 you take the generated value (which is also its remainder on division by 4106) if the generated value is strictly below 100061506=4106 and stop;

  • If continuing, roll the fourth die so you have now generated a number from 41006 to 55556. Since 100006÷4106=126 remainder 2406 you take the remainder of the generated value on division by 4106 if the generated value is strictly below 1000062406=53206 and stop;

  • If continuing, roll the fifth die so you have now generated a number from 532006 to 555556. Since 1000006÷4106=1236 remainder 3306 you take the remainder of the generated value on division by 4106 if the generated value is strictly below 10000063306=552306 and stop;

  • If continuing, roll the sixth die so you have now generated a number from 5523006 to 5555556. Since 10000006÷4106=12356 remainder 106 you take the remainder of the generated value on division by 4106 if the generated value is strictly below 10000006106=5555506 and stop;

  • etc.


(+1) This answer would be more clear if you explained how you map the outcomes of, say, 4d6 or 5d6 to 1,2, ..., 150.
Sycorax says Reinstate Monica

@Sycorax - I have now provided a base 6 mapping
Henry

1
Entropy considerations indicate you can do substantially better than this algorithm. It also remains to show that your algorithm actually produces independently distributed values with uniform distributions.
whuber

@whuber - My algorithm produces exactly one integer from 150 possibilities and does so uniformly providing the dice rolls are uniform and independent. At each step if reached, each of the 150 values is equally likely to be selected. It does not produce multiple values (unlike your answer)
Henry

1
I misunderstood what you meant, then, in writing "the algorithm is successive rolls of dice." (I should have read through more carefully.) In doing so, it seems to me your algorithm does not produce a uniform distribution, but I'm not sure because I haven't been able to figure out what the general algorithm is intended to be. It would be good to see a demonstration that it does produce uniform values.
whuber
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.