The max roll after d rolls is a discrete random variable with 6 possible outcomes. To find it’s probability distribution function (pdf) we need to find the probability of getting one of these outcomes.
Let’s first look at the concrete case of getting a max roll of 4 after d=3 rolls. First, we know that all of our rolls need to be under 5, which we can model as \((\frac{4}{6})^3\).
Next we need to know, given that all our rolls are under 5, the probability that at least one was a 4. We can model this as 1 minus the probability that none of the rolls were 4, or \(1-(\frac{3}{4})^3\). Note that the denominator is a 4, since we are calculating based on the condition that all our rolls were under 5.
We can combine these probabilities as \((\frac{4}{6})^3\times[1-(\frac{3}{4})^3]\). This comes out to
(4/6)^3*(1-(3/4)^3)
[1] 0.1712963
or 17.1%. We can follow this model for any desired max roll and for any number of dice rolls. The generic formula becomes \(P(Max Roll = \textit{k}|\textit{d } rolls) = (\frac{k}{6})^d\times[1-(\frac{k-1}{k})^d]\).
Distibuting the outside into the rest, we get \(P(Max Roll = \textit{k}|\textit{d } rolls) = (\frac{k}{6})^d-(\frac{k-1}{6})^d\). Using this formula we can write a function to generate a pdf for max roll
pdfMaxRoll = function(d) {
k = 1:6
(k/6)^d*(1-((k-1)/k)^d)
}
pdfMaxRoll(3)
[1] 0.00462963 0.03240741 0.08796296 0.17129630 0.28240741 0.42129630
As you can see, when we input 3 into this function, the 4th value of the output matches our calculation for a max of 4 given 3 dice rolls. We can modify the function slightly to allow for generation of a pdf table for all dice rolls from 1 to 5.
pdfMaxRoll = function(d=0) {
if(d==0)
return(data.frame(1:6,pdfMaxRoll(1),pdfMaxRoll(2),pdfMaxRoll(3),pdfMaxRoll(4),pdfMaxRoll(5)))
k = 1:6
(k/6)^d*(1-((k-1)/k)^d)
}
pdfMaxRoll()
In the 3rd column we can see the same data for 3 dice rolls.
Now we can calculate the expected value for max dice roll. We can get the expected value of a discrete random variable with the formula \(EV = \sum\limits_{k=1}^n k\times p_k\). In our case, k is a value for max dice roll, p_k is the probability of getting that value, and n is 6.
So the expected value for max roll, given d dice rolls would be \(EV = 1*[(\frac{1}{6})^d-(\frac{0}{6})^d] + 2*[(\frac{2}{6})^d-(\frac{1}{6})^d] + 3*[(\frac{3}{6})^d-(\frac{2}{6})^d] + ...\).
As you can see this series cascades and terms cancel out. At the end we are left with \(EV = 6-(\frac{5}{6})^d-(\frac{4}{6})^d-(\frac{3}{6})^d-(\frac{2}{6})^d-(\frac{1}{6})^d\). We can write this as a function
expMaxRoll = function(d=1:5) {
6 - (5/6)^d - (4/6)^d - (3/6)^d - (2/6)^d - (1/6)^d
}
expMaxRoll()
[1] 3.500000 4.472222 4.958333 5.244599 5.430941
The default input for this function is the range from 1 to 5, so the output we get is the expected value for max roll for 1 to 5 dice rolls.
LS0tDQp0aXRsZTogIjEuMSBEZXJpdmluZyB0aGUgUERGIGFuZCBFeHBlY3RlZCBWYWx1ZSBmb3IgTWF4IFJvbGwiDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQpUaGUgbWF4IHJvbGwgYWZ0ZXIgKmQqIHJvbGxzIGlzIGEgZGlzY3JldGUgcmFuZG9tIHZhcmlhYmxlIHdpdGggNiBwb3NzaWJsZSBvdXRjb21lcy4gVG8gZmluZCBpdCdzIHByb2JhYmlsaXR5IGRpc3RyaWJ1dGlvbiBmdW5jdGlvbiAocGRmKSB3ZSBuZWVkIHRvIGZpbmQgdGhlIHByb2JhYmlsaXR5IG9mIGdldHRpbmcgb25lIG9mIHRoZXNlIG91dGNvbWVzLiANCg0KTGV0J3MgZmlyc3QgbG9vayBhdCB0aGUgY29uY3JldGUgY2FzZSBvZiBnZXR0aW5nIGEgbWF4IHJvbGwgb2YgNCBhZnRlciBkPTMgcm9sbHMuIEZpcnN0LCB3ZSBrbm93IHRoYXQgYWxsIG9mIG91ciByb2xscyBuZWVkIHRvIGJlIHVuZGVyIDUsIHdoaWNoIHdlIGNhbiBtb2RlbCBhcyAkKFxmcmFjezR9ezZ9KV4zJC4gDQoNCk5leHQgd2UgbmVlZCB0byBrbm93LCBnaXZlbiB0aGF0IGFsbCBvdXIgcm9sbHMgYXJlIHVuZGVyIDUsIHRoZSBwcm9iYWJpbGl0eSB0aGF0IGF0IGxlYXN0IG9uZSB3YXMgYSA0LiBXZSBjYW4gbW9kZWwgdGhpcyBhcyAxIG1pbnVzIHRoZSBwcm9iYWJpbGl0eSB0aGF0IG5vbmUgb2YgdGhlIHJvbGxzIHdlcmUgNCwgb3IgJDEtKFxmcmFjezN9ezR9KV4zJC4gTm90ZSB0aGF0IHRoZSBkZW5vbWluYXRvciBpcyBhIDQsIHNpbmNlIHdlIGFyZSBjYWxjdWxhdGluZyBiYXNlZCBvbiB0aGUgY29uZGl0aW9uIHRoYXQgYWxsIG91ciByb2xscyB3ZXJlIHVuZGVyIDUuDQoNCldlIGNhbiBjb21iaW5lIHRoZXNlIHByb2JhYmlsaXRpZXMgYXMgJChcZnJhY3s0fXs2fSleM1x0aW1lc1sxLShcZnJhY3szfXs0fSleM10kLiBUaGlzIGNvbWVzIG91dCB0bw0KYGBge3J9DQooNC82KV4zKigxLSgzLzQpXjMpDQpgYGANCm9yIDE3LjElLiBXZSBjYW4gZm9sbG93IHRoaXMgbW9kZWwgZm9yIGFueSBkZXNpcmVkIG1heCByb2xsIGFuZCBmb3IgYW55IG51bWJlciBvZiBkaWNlIHJvbGxzLiBUaGUgZ2VuZXJpYyBmb3JtdWxhIGJlY29tZXMgJFAoTWF4IFJvbGwgPSBcdGV4dGl0e2t9fFx0ZXh0aXR7ZCB9IHJvbGxzKSA9IChcZnJhY3trfXs2fSleZFx0aW1lc1sxLShcZnJhY3trLTF9e2t9KV5kXSQuIA0KDQpEaXN0aWJ1dGluZyB0aGUgb3V0c2lkZSBpbnRvIHRoZSByZXN0LCB3ZSBnZXQgJFAoTWF4IFJvbGwgPSBcdGV4dGl0e2t9fFx0ZXh0aXR7ZCB9IHJvbGxzKSA9IChcZnJhY3trfXs2fSleZC0oXGZyYWN7ay0xfXs2fSleZCQuIFVzaW5nIHRoaXMgZm9ybXVsYSB3ZSBjYW4gd3JpdGUgYSBmdW5jdGlvbiB0byBnZW5lcmF0ZSBhIHBkZiBmb3IgbWF4IHJvbGwNCmBgYHtyfQ0KcGRmTWF4Um9sbCA9IGZ1bmN0aW9uKGQpIHsNCiAgayA9IDE6Ng0KICAoay82KV5kKigxLSgoay0xKS9rKV5kKQ0KfQ0KcGRmTWF4Um9sbCgzKQ0KYGBgDQoNCkFzIHlvdSBjYW4gc2VlLCB3aGVuIHdlIGlucHV0IDMgaW50byB0aGlzIGZ1bmN0aW9uLCB0aGUgNHRoIHZhbHVlIG9mIHRoZSBvdXRwdXQgbWF0Y2hlcyBvdXIgY2FsY3VsYXRpb24gZm9yIGEgbWF4IG9mIDQgZ2l2ZW4gMyBkaWNlIHJvbGxzLiBXZSBjYW4gbW9kaWZ5IHRoZSBmdW5jdGlvbiBzbGlnaHRseSB0byBhbGxvdyBmb3IgZ2VuZXJhdGlvbiBvZiBhIHBkZiB0YWJsZSBmb3IgYWxsIGRpY2Ugcm9sbHMgZnJvbSAxIHRvIDUuDQoNCmBgYHtyfQ0KcGRmTWF4Um9sbCA9IGZ1bmN0aW9uKGQ9MCkgew0KICBpZihkPT0wKSANCiAgICByZXR1cm4oZGF0YS5mcmFtZSgxOjYscGRmTWF4Um9sbCgxKSxwZGZNYXhSb2xsKDIpLHBkZk1heFJvbGwoMykscGRmTWF4Um9sbCg0KSxwZGZNYXhSb2xsKDUpKSkNCiAgayA9IDE6Ng0KICAoay82KV5kKigxLSgoay0xKS9rKV5kKQ0KfQ0KcGRmTWF4Um9sbCgpDQpgYGANCg0KSW4gdGhlIDNyZCBjb2x1bW4gd2UgY2FuIHNlZSB0aGUgc2FtZSBkYXRhIGZvciAzIGRpY2Ugcm9sbHMuDQoNCk5vdyB3ZSBjYW4gY2FsY3VsYXRlIHRoZSBleHBlY3RlZCB2YWx1ZSBmb3IgbWF4IGRpY2Ugcm9sbC4gV2UgY2FuIGdldCB0aGUgZXhwZWN0ZWQgdmFsdWUgb2YgYSBkaXNjcmV0ZSByYW5kb20gdmFyaWFibGUgd2l0aCB0aGUgZm9ybXVsYSAkRVYgPSBcc3VtXGxpbWl0c197az0xfV5uIGtcdGltZXMgcF9rJC4gSW4gb3VyIGNhc2UsICprKiBpcyBhIHZhbHVlIGZvciBtYXggZGljZSByb2xsLCAqcF9rKiBpcyB0aGUgcHJvYmFiaWxpdHkgb2YgZ2V0dGluZyB0aGF0IHZhbHVlLCBhbmQgKm4qIGlzIDYuDQoNClNvIHRoZSBleHBlY3RlZCB2YWx1ZSBmb3IgbWF4IHJvbGwsIGdpdmVuICpkKiBkaWNlIHJvbGxzIHdvdWxkIGJlICRFViA9IDEqWyhcZnJhY3sxfXs2fSleZC0oXGZyYWN7MH17Nn0pXmRdICsgMipbKFxmcmFjezJ9ezZ9KV5kLShcZnJhY3sxfXs2fSleZF0gKyAzKlsoXGZyYWN7M317Nn0pXmQtKFxmcmFjezJ9ezZ9KV5kXSArIC4uLiQuIA0KDQpBcyB5b3UgY2FuIHNlZSB0aGlzIHNlcmllcyBjYXNjYWRlcyBhbmQgdGVybXMgY2FuY2VsIG91dC4gQXQgdGhlIGVuZCB3ZSBhcmUgbGVmdCB3aXRoICRFViA9IDYtKFxmcmFjezV9ezZ9KV5kLShcZnJhY3s0fXs2fSleZC0oXGZyYWN7M317Nn0pXmQtKFxmcmFjezJ9ezZ9KV5kLShcZnJhY3sxfXs2fSleZCQuIFdlIGNhbiB3cml0ZSB0aGlzIGFzIGEgZnVuY3Rpb24NCg0KYGBge3J9DQpleHBNYXhSb2xsID0gZnVuY3Rpb24oZD0xOjUpIHsNCiAgNiAtICg1LzYpXmQgLSAoNC82KV5kIC0gKDMvNileZCAtICgyLzYpXmQgLSAoMS82KV5kDQp9DQpleHBNYXhSb2xsKCkNCmBgYA0KVGhlIGRlZmF1bHQgaW5wdXQgZm9yIHRoaXMgZnVuY3Rpb24gaXMgdGhlIHJhbmdlIGZyb20gMSB0byA1LCBzbyB0aGUgb3V0cHV0IHdlIGdldCBpcyB0aGUgZXhwZWN0ZWQgdmFsdWUgZm9yIG1heCByb2xsIGZvciAxIHRvIDUgZGljZSByb2xscy4NCg==