Difference between revisions of "Rnz"

From NetHackWiki
Jump to navigation Jump to search
m (More adjustment)
(Cumulative distribution function: fill in integration constants. I probably did it correctly since it all adds up to 1 at the end.)
 
(13 intermediate revisions by 7 users not shown)
Line 1: Line 1:
 
{{DISPLAYTITLE:rnz}}
 
{{DISPLAYTITLE:rnz}}
[[image:rnz100.svg|thumb|Probability graph of a call of rnz(100).]]
+
{{randomvariable|name=rnz(x)|graph=Rnz100.svg|caption=[[wikipedia:Probability density function|Probability density function]] of a call of rnz(100).|distribution=unique|mean=approx. 1.29815x|stddev=approx. 1.04424x}}
 
'''rnz''' is a function that generates a random number with a distribution that is meant to peak at a given value and trail off at larger values.  A call of rnz(350), for example, gives the base [[prayer timeout]] and will often return a number close to 350, sometimes a number somewhat less or somewhat more than 350, and rarely a number much greater or much less than 350.
 
'''rnz''' is a function that generates a random number with a distribution that is meant to peak at a given value and trail off at larger values.  A call of rnz(350), for example, gives the base [[prayer timeout]] and will often return a number close to 350, sometimes a number somewhat less or somewhat more than 350, and rarely a number much greater or much less than 350.
  
The most probable outcome turns out not to be the given parameter, but half of that number, as can be seen in the graph to the right.
+
The most probable outcome (the mode of the distribution) turns out not to be the given parameter, but half of that number, as can be seen in the graph to the right.  The mean outcome, on the other hand, is about 1.30 times the given parameter.
  
 
rnz is used for the following purposes:
 
rnz is used for the following purposes:
Line 11: Line 11:
 
* rnz(10) (or rnz(25) when first building a [[level]]) plays a part in determining when a [[corpse]] disintegrates.
 
* rnz(10) (or rnz(25) when first building a [[level]]) plays a part in determining when a [[corpse]] disintegrates.
  
* A number of rnz calls are used in determining the [[prayer]] timeout.  In particular, the timeout after successful prayer is rnz(350), with a penalty of rnz(1000) added if you are [[crowning|crowned]] or have killed the [[Wizard of Yendor]].  If you have killed the Wizard and are also crowned, the penalty is doubled.
+
* A number of rnz calls are used in determining the [[prayer timeout]].  In particular, the timeout after successful prayer is rnz(350), with a penalty of rnz(1000) added if you are [[crowning|crowned]] or have killed the [[Wizard of Yendor]].  If you have killed the Wizard and are also crowned, the penalty is doubled.
  
 
== Mathematical analysis ==
 
== Mathematical analysis ==
Line 19: Line 19:
 
The code is quoted below, with some cleanup for readability:
 
The code is quoted below, with some cleanup for readability:
  
int
+
<syntaxhighlight lang="c">
rnz(i)
+
int
int i;
+
rnz(i)
{
+
int i;
        register long x = i;
+
{
        register long tmp = 1000;
+
        register long x = i;
&nbsp;
+
        register long tmp = 1000;
        tmp += rn2(1000);
 
        tmp *= rne(4);
 
        if (rn2(2)) { x *= tmp; x /= 1000; }
 
        else { x *= 1000; x /= tmp; }
 
        return((int)x);
 
}
 
  
 +
        tmp += rn2(1000);
 +
        tmp *= rne(4);
 +
        if (rn2(2)) { x *= tmp; x /= 1000; }
 +
        else { x *= 1000; x /= tmp; }
 +
        return((int)x);
 +
}</syntaxhighlight>
  
 
=== Probability density function ===
 
=== Probability density function ===
Line 129: Line 129:
  
 
This random variable, multiplied by the parameter '''i''', is the return value of rnz.
 
This random variable, multiplied by the parameter '''i''', is the return value of rnz.
 +
 +
=== Cumulative distribution function ===
 +
 +
The integral of the probability density function, which contains the probability that the result will be less than ''x'':
 +
 +
{| class="wikitable"
 +
!Range!!Distribution
 +
|-
 +
|<math>\frac{1}{10}</math> to <math>\frac{1}{8}</math>||<math>-\frac{x^{-1}}{2560}+\frac{1}{256}</math>
 +
|-
 +
|<math>\frac{1}{8}</math> to <math>\frac{1}{6}</math>||<math>-\frac{19x^{-1}}{10240}+\frac{1}{64}</math>
 +
|-
 +
|<math>\frac{1}{6}</math> to <math>\frac{1}{5}</math>||<math>-\frac{99x^{-1}}{10240}+\frac{1}{16}</math>
 +
|-
 +
|<math>\frac{1}{5}</math> to <math>\frac{1}{4}</math>||<math>-\frac{19x^{-1}}{2048}+\frac{31}{512}</math>
 +
|-
 +
|<math>\frac{1}{4}</math> to <math>\frac{1}{3}</math>||<math>-\frac{7x^{-1}}{128}+\frac{31}{128}</math>
 +
|-
 +
|<math>\frac{1}{3}</math> to <math>\frac{1}{2}</math>||<math>-\frac{3x^{-1}}{64}+\frac{7}{32}</math>
 +
|-
 +
|<math>\frac{1}{2}</math> to <math>1</math>||<math>-\frac{3x^{-1}}{8}+\frac{7}{8}</math>
 +
|-
 +
|<math>1</math> to <math>2</math>||<math>\frac{3x}{8}+\frac{1}{8}</math>
 +
|-
 +
|<math>2</math> to <math>3</math>||<math>\frac{3x}{64}+\frac{25}{32}</math>
 +
|-
 +
|<math>3</math> to <math>4</math>||<math>\frac{7x}{128}+\frac{97}{128}</math>
 +
|-
 +
|<math>4</math> to <math>5</math>||<math>\frac{19x}{2048}+\frac{481}{512}</math>
 +
|-
 +
|<math>5</math> to <math>6</math>||<math>\frac{99x}{10240}+\frac{15}{16}</math>
 +
|-
 +
|<math>6</math> to <math>8</math>||<math>\frac{19x}{10240}+\frac{63}{64}</math>
 +
|-
 +
|<math>8</math> to <math>10</math>||<math>\frac{x}{2560}+\frac{255}{256}</math>
 +
|}
  
 
=== Mean ===
 
=== Mean ===
Line 139: Line 175:
  
 
{| class="wikitable"
 
{| class="wikitable"
!Range!!<math>f(x)</math>!!<math>x p(x)</math>!!indefinite integral!!definite integral
+
!Range!!<math>p(x)</math>!!<math>x p(x)</math>!!indefinite integral!!definite integral
 
|-
 
|-
 
|<math>-\infty</math> to <math>\frac{1}{10}</math>||<math>0</math>||<math>0</math>||<math>0</math>||<math>0</math>
 
|<math>-\infty</math> to <math>\frac{1}{10}</math>||<math>0</math>||<math>0</math>||<math>0</math>||<math>0</math>
Line 151: Line 187:
 
|<math>\frac{1}{5}</math> to <math>\frac{1}{4}</math>||<math>\frac{19x^{-2}}{2048}</math>||<math>\frac{19x^{-1}}{2048}</math>||<math>\frac{19\ln(x)}{2048}</math>||<math>\frac{19(\ln(1/4)-\ln(1/5))}{2048}</math>
 
|<math>\frac{1}{5}</math> to <math>\frac{1}{4}</math>||<math>\frac{19x^{-2}}{2048}</math>||<math>\frac{19x^{-1}}{2048}</math>||<math>\frac{19\ln(x)}{2048}</math>||<math>\frac{19(\ln(1/4)-\ln(1/5))}{2048}</math>
 
|-
 
|-
|<math>\frac{1}{4}</math> to <math>\frac{1}{3}</math>||<math>\frac{7x^{-2}}{128}</math>||<math>\frac{7x^{-1}}{128}</math>||<math>\frac{7\ln(x)}{128}</math>||<math>\frac{7(\ln(1/4)-\ln(1/3))}{128}</math>
+
|<math>\frac{1}{4}</math> to <math>\frac{1}{3}</math>||<math>\frac{7x^{-2}}{128}</math>||<math>\frac{7x^{-1}}{128}</math>||<math>\frac{7\ln(x)}{128}</math>||<math>\frac{7(\ln(1/3)-\ln(1/4))}{128}</math>
 
|-
 
|-
|<math>\frac{1}{3}</math> to <math>\frac{1}{2}</math>||<math>\frac{3x^{-2}}{64}</math>||<math>\frac{3x^{-1}}{64}</math>||<math>\frac{3\ln(x)}{64}</math>||<math>\frac{3(\ln(1/3)-\ln(1/2))}{64}</math>
+
|<math>\frac{1}{3}</math> to <math>\frac{1}{2}</math>||<math>\frac{3x^{-2}}{64}</math>||<math>\frac{3x^{-1}}{64}</math>||<math>\frac{3\ln(x)}{64}</math>||<math>\frac{3(\ln(1/2)-\ln(1/3))}{64}</math>
 
|-
 
|-
 
|<math>\frac{1}{2}</math> to <math>1</math>||<math>\frac{3x^{-2}}{8}</math>||<math>\frac{3x^{-1}}{8}</math>||<math>\frac{3\ln(x)}{8}</math>||<math>\frac{-3\ln(1/2)}{8}</math>
 
|<math>\frac{1}{2}</math> to <math>1</math>||<math>\frac{3x^{-2}}{8}</math>||<math>\frac{3x^{-1}}{8}</math>||<math>\frac{3\ln(x)}{8}</math>||<math>\frac{-3\ln(1/2)}{8}</math>
Line 178: Line 214:
 
:<math>\mu = \ln(2) \cdot \frac{4419}{10240}+\frac{1023}{1024} \approx 1.29815.</math>
 
:<math>\mu = \ln(2) \cdot \frac{4419}{10240}+\frac{1023}{1024} \approx 1.29815.</math>
  
Thus the mean result of a call to rnz(x) is 1.29815x.  The mean prayer timeout, then, is 454.351 turns.
+
Thus the mean result of a call to rnz(x) is 1.29815x.  The mean prayer timeout, then, is 454.351 turns. (Actually, it is 453.787, so the error introduced by treating Z as continuous is quite small.)
  
 
=== Standard deviation ===
 
=== Standard deviation ===
Line 296: Line 332:
 
:<math>\sigma = \sqrt{\frac{46597799}{26214400}-\ln(2)\frac{4520637}{5242880}-\ln^2(2)\frac{19527561}{104857600}} \approx 1.04424.</math>
 
:<math>\sigma = \sqrt{\frac{46597799}{26214400}-\ln(2)\frac{4520637}{5242880}-\ln^2(2)\frac{19527561}{104857600}} \approx 1.04424.</math>
  
The standard deviation of rnz(x), then, is 1.04424x, or 365.483 for an ordinary prayer timeout.
+
The standard deviation of rnz(x), then, is 1.04424x, or 365.483 for an ordinary prayer timeout. (Actually, it is 365.344, so the error introduced by treating Z as continuous is quite small.)
  
[[Category:Game mechanics]]
+
{{nethack-343}}
 +
[[Category:Random number functions]]

Latest revision as of 05:58, 9 December 2022

rnz(x)
Probability density function of a call of rnz(100).
Distribution unique
Mean approx. 1.29815x
Standard deviation approx. 1.04424x

rnz is a function that generates a random number with a distribution that is meant to peak at a given value and trail off at larger values. A call of rnz(350), for example, gives the base prayer timeout and will often return a number close to 350, sometimes a number somewhat less or somewhat more than 350, and rarely a number much greater or much less than 350.

The most probable outcome (the mode of the distribution) turns out not to be the given parameter, but half of that number, as can be seen in the graph to the right. The mean outcome, on the other hand, is about 1.30 times the given parameter.

rnz is used for the following purposes:

  • rnz(100) is the time that one must wait after invoking an artifact before invoking it again.
  • rnz(10) (or rnz(25) when first building a level) plays a part in determining when a corpse disintegrates.
  • A number of rnz calls are used in determining the prayer timeout. In particular, the timeout after successful prayer is rnz(350), with a penalty of rnz(1000) added if you are crowned or have killed the Wizard of Yendor. If you have killed the Wizard and are also crowned, the penalty is doubled.

Mathematical analysis

rnz produces such a bizarre distribution that it is hard to tell what the original programmer had in mind. It's quite possible that it was meant to be some distribution with Z in the name, but its construction doesn't seem to suggest one.

The code is quoted below, with some cleanup for readability:

int
rnz(i)
int i;
{
        register long x = i;
        register long tmp = 1000;

        tmp += rn2(1000);
        tmp *= rne(4);
        if (rn2(2)) { x *= tmp; x /= 1000; }
        else { x *= 1000; x /= tmp; }
        return((int)x);
}

Probability density function

The rn2(2) call chooses, with equal probability, between two different distributions; one is

 i \cdot \operatorname{rne}(4) \cdot \frac{1000 + \operatorname{rn2}(1000)}{1000}

and the other is

 i \cdot \left[ \operatorname{rne}(4) \cdot \frac{1000 + \operatorname{rn2}(1000)}{1000} \right]^{-1}.

The function is easier to analyze if the expression

\frac{1000 + \operatorname{rn2}(1000)}{1000}

is modeled as a continuous uniformly distributed variable with range from 1 to 2. Let this variable be called z. For the case where the variable i is divided by the random formula, it helps to know the distribution of the reciprocal of z; it is z-2 for 0.5 <= z <= 1, and 0 otherwise.

The rne(4) call returns an integer from 1 to 5, with the following probabilities:

Return Probability
1 3/4
2 3/16
3 3/64
4 3/256
5 1/256

If the hero's experience level is 18 or greater, then rne can return numbers greater than 5; but this event has low probability (1/1024 for all experience levels 18 or greater), and to keep this explanation simple it will not be considered.

We can now consider all possible outcomes of the rn2(2) and rne(4) calls:

rn2(2) returns rne(4) returns Probability Outcome Range Distribution
1 5 \frac{1}{512} \frac{1}{5z} \frac{1}{10} to \frac{1}{5} \frac{x^{-2}}{2560}
1 4 \frac{3}{512} \frac{1}{4z} \frac{1}{8} to \frac{1}{4} \frac{3x^{-2}}{2048}
1 3 \frac{3}{128} \frac{1}{3z} \frac{1}{6} to \frac{1}{3} \frac{x^{-2}}{128}
1 2 \frac{3}{32} \frac{1}{2z} \frac{1}{4} to \frac{1}{2} \frac{3x^{-2}}{64}
1 1 \frac{3}{8} \frac{1}{z} \frac{1}{2} to 1 \frac{3x^{-2}}{8}
0 1 \frac{3}{8} z 1 to 2 \frac{3}{8}
0 2 \frac{3}{32} 2z 2 to 4 \frac{3}{64}
0 3 \frac{3}{128} 3z 3 to 6 \frac{1}{128}
0 4 \frac{3}{512} 4z 4 to 8 \frac{3}{2048}
0 5 \frac{1}{512} 5z 5 to 10 \frac{1}{2560}

Where the ranges overlap, the distributions add:

Range Distribution
\frac{1}{10} to \frac{1}{8} \frac{x^{-2}}{2560}
\frac{1}{8} to \frac{1}{6} \frac{19x^{-2}}{10240}
\frac{1}{6} to \frac{1}{5} \frac{99x^{-2}}{10240}
\frac{1}{5} to \frac{1}{4} \frac{19x^{-2}}{2048}
\frac{1}{4} to \frac{1}{3} \frac{7x^{-2}}{128}
\frac{1}{3} to \frac{1}{2} \frac{3x^{-2}}{64}
\frac{1}{2} to 1 \frac{3x^{-2}}{8}
1 to 2 \frac{3}{8}
2 to 3 \frac{3}{64}
3 to 4 \frac{7}{128}
4 to 5 \frac{19}{2048}
5 to 6 \frac{99}{10240}
6 to 8 \frac{19}{10240}
8 to 10 \frac{1}{2560}

This random variable, multiplied by the parameter i, is the return value of rnz.

Cumulative distribution function

The integral of the probability density function, which contains the probability that the result will be less than x:

Range Distribution
\frac{1}{10} to \frac{1}{8} -\frac{x^{-1}}{2560}+\frac{1}{256}
\frac{1}{8} to \frac{1}{6} -\frac{19x^{-1}}{10240}+\frac{1}{64}
\frac{1}{6} to \frac{1}{5} -\frac{99x^{-1}}{10240}+\frac{1}{16}
\frac{1}{5} to \frac{1}{4} -\frac{19x^{-1}}{2048}+\frac{31}{512}
\frac{1}{4} to \frac{1}{3} -\frac{7x^{-1}}{128}+\frac{31}{128}
\frac{1}{3} to \frac{1}{2} -\frac{3x^{-1}}{64}+\frac{7}{32}
\frac{1}{2} to 1 -\frac{3x^{-1}}{8}+\frac{7}{8}
1 to 2 \frac{3x}{8}+\frac{1}{8}
2 to 3 \frac{3x}{64}+\frac{25}{32}
3 to 4 \frac{7x}{128}+\frac{97}{128}
4 to 5 \frac{19x}{2048}+\frac{481}{512}
5 to 6 \frac{99x}{10240}+\frac{15}{16}
6 to 8 \frac{19x}{10240}+\frac{63}{64}
8 to 10 \frac{x}{2560}+\frac{255}{256}

Mean

If p(x) is the probability density function of a continuous random variable, then the mean of the variable is

\int_{-\infty}^\infty x \, p(x)\, \operatorname{d}x .

For the continuous random variable described by the table at the end of the previous section, we find:

Range p(x) x p(x) indefinite integral definite integral
-\infty to \frac{1}{10} 0 0 0 0
\frac{1}{10} to \frac{1}{8} \frac{x^{-2}}{2560} \frac{x^{-1}}{2560} \frac{\ln(x)}{2560} \frac{\ln(1/8)-\ln(1/10)}{2560}
\frac{1}{8} to \frac{1}{6} \frac{19x^{-2}}{10240} \frac{19x^{-1}}{10240} \frac{19\ln(x)}{10240} \frac{19(\ln(1/6)-\ln(1/8))}{10240}
\frac{1}{6} to \frac{1}{5} \frac{99x^{-2}}{10240} \frac{99x^{-1}}{10240} \frac{99\ln(x)}{10240} \frac{99(\ln(1/5)-\ln(1/6))}{10240}
\frac{1}{5} to \frac{1}{4} \frac{19x^{-2}}{2048} \frac{19x^{-1}}{2048} \frac{19\ln(x)}{2048} \frac{19(\ln(1/4)-\ln(1/5))}{2048}
\frac{1}{4} to \frac{1}{3} \frac{7x^{-2}}{128} \frac{7x^{-1}}{128} \frac{7\ln(x)}{128} \frac{7(\ln(1/3)-\ln(1/4))}{128}
\frac{1}{3} to \frac{1}{2} \frac{3x^{-2}}{64} \frac{3x^{-1}}{64} \frac{3\ln(x)}{64} \frac{3(\ln(1/2)-\ln(1/3))}{64}
\frac{1}{2} to 1 \frac{3x^{-2}}{8} \frac{3x^{-1}}{8} \frac{3\ln(x)}{8} \frac{-3\ln(1/2)}{8}
1 to 2 \frac{3}{8} \frac{3x}{8} \frac{3x^{2}}{16} \frac{9}{16}
2 to 3 \frac{3}{64} \frac{3x}{64} \frac{3x^{2}}{128} \frac{15}{128}
3 to 4 \frac{7}{128} \frac{7x}{128} \frac{7x^{2}}{256} \frac{49}{256}
4 to 5 \frac{19}{2048} \frac{19x}{2048} \frac{19x^{2}}{4096} \frac{171}{4096}
5 to 6 \frac{99}{10240} \frac{99x}{10240} \frac{99x^{2}}{20480} \frac{1089}{20480}
6 to 8 \frac{19}{10240} \frac{19x}{10240} \frac{19x^{2}}{20480} \frac{133}{5120}
8 to 10 \frac{1}{2560} \frac{x}{2560} \frac{x^{2}}{5120} \frac{9}{1280}
10 to +\infty 0 0 0 0

The sum of the definite integrals looks complicated at first, but by applying the laws of logarithms it can be reduced to

\mu = \ln(2) \cdot \frac{4419}{10240}+\frac{1023}{1024} \approx 1.29815.

Thus the mean result of a call to rnz(x) is 1.29815x. The mean prayer timeout, then, is 454.351 turns. (Actually, it is 453.787, so the error introduced by treating Z as continuous is quite small.)

Standard deviation

The standard deviation of a variable with probability density function p(x) and mean \mu is:

\sigma = \sqrt{\int_{-\infty}^\infty (x-\mu)^2 \, p(x) \, dx} .

Since \mu is a constant, we carry it through the calculation and substitute it at the end. The integral under the square root sign is the variance and we calculate it thus:

Range f(x) (x-\mu)^2 p(x) indefinite integral definite integral
-\infty to \frac{1}{10} 0 0 0 0
\frac{1}{10} to \frac{1}{8} \frac{x^{-2}}{2560} \frac{1-2x^{-1}\mu+x^{-2}\mu^2}{2560} \frac{x-2\ln(x)\mu-x^{-1}\mu^2}{2560} \frac{1/40+2\mu^2+2\ln(8)\mu-2\ln(10)\mu}{2560}
\frac{1}{8} to \frac{1}{6} \frac{19x^{-2}}{10240} \frac{19(1-2x^{-1}\mu+x^{-2}\mu^2)}{10240} \frac{19(x-2\ln(x)\mu-x^{-1}\mu^2)}{10240} \frac{19(1/24+2\mu^2+2\ln(6)\mu-2\ln(8)\mu)}{10240}
\frac{1}{6} to \frac{1}{5} \frac{99x^{-2}}{10240} \frac{99(1-2x^{-1}\mu+x^{-2}\mu^2)}{10240} \frac{99(x-2\ln(x)\mu-x^{-1}\mu^2)}{10240} \frac{99(1/30+\mu^2+2\ln(5)\mu-2\ln(6)\mu)}{10240}
\frac{1}{5} to \frac{1}{4} \frac{19x^{-2}}{2048} \frac{19(1-2x^{-1}\mu+x^{-2}\mu^2)}{2048} \frac{19(x-2\ln(x)\mu-x^{-1}\mu^2)}{2048} \frac{19(1/20+\mu^2+2\ln(4)\mu-2\ln(5)\mu)}{2048}
\frac{1}{4} to \frac{1}{3} \frac{7x^{-2}}{128} \frac{7(1-2x^{-1}\mu+x^{-2}\mu^2)}{128} \frac{7(x-2\ln(x)\mu-x^{-1}\mu^2)}{128} \frac{7(1/12+\mu^2+2\ln(3)\mu-2\ln(4)\mu)}{128}
\frac{1}{3} to \frac{1}{2} \frac{3x^{-2}}{64} \frac{3(1-2x^{-1}\mu+x^{-2}\mu^2)}{64} \frac{3(x-2\ln(x)\mu-x^{-1}\mu^2)}{64} \frac{3(1/6+\mu^2+2\ln(2)\mu-2\ln(3)\mu)}{64}
\frac{1}{2} to 1 \frac{3x^{-2}}{8} \frac{3(1-2x^{-1}\mu+x^{-2}\mu^2)}{8} \frac{3(x-2\ln(x)\mu-x^{-1}\mu^2)}{8} \frac{3(1/2+\mu^2-2\ln(2)\mu)}{8}
1 to 2 \frac{3}{8} \frac{3(x^2-2x\mu+\mu^2)}{8} \frac{3(\frac{x^3}{3}-x^2\mu+x\mu^2)}{8} \frac{3(7/3-3\mu+\mu^2)}{8}
2 to 3 \frac{3}{64} \frac{3(x^2-2x\mu+\mu^2)}{64} \frac{3(\frac{x^3}{3}-x^2\mu+x\mu^2)}{64} \frac{3(19/3-5\mu+\mu^2)}{64}
3 to 4 \frac{7}{128} \frac{7(x^2-2x\mu+\mu^2)}{128} \frac{7(\frac{x^3}{3}-x^2\mu+x\mu^2)}{128} \frac{7(37/3-7\mu+\mu^2)}{128}
4 to 5 \frac{19}{2048} \frac{19(x^2-2x\mu+\mu^2)}{2048} \frac{19(\frac{x^3}{3}-x^2\mu+x\mu^2)}{2048} \frac{19(61/3-9\mu+\mu^2)}{2048}
5 to 6 \frac{99}{10240} \frac{99(x^2-2x\mu+\mu^2)}{10240} \frac{99(\frac{x^3}{3}-x^2\mu+x\mu^2)}{10240} \frac{99(91/3-11\mu+\mu^2)}{10240}
6 to 8 \frac{19}{10240} \frac{19(x^2-2x\mu+\mu^2)}{10240} \frac{19(\frac{x^3}{3}-x^2\mu+x\mu^2)}{10240} \frac{19(296/3-28\mu+2\mu^2)}{10240}
8 to 10 \frac{1}{2560} \frac{x^2-2x\mu+\mu^2}{2560} \frac{\frac{x^3}{3}-x^2\mu+x\mu^2}{2560} \frac{488/3-36\mu+2\mu^2}{2560}
10 to +\infty 0 0 0 0

Collecting terms and applying the laws of logarithms gives

\frac{1136891}{409600}-\mu\left(\frac{1023}{512}+\ln(2)\frac{4419}{5120}\right)+\mu^2

and substituting the value of \mu gives

\frac{46597799}{26214400}-\ln(2)\frac{4520637}{5242880}-\ln^2(2)\frac{19527561}{104857600}.

This is the variance of the underlying variable; the standard deviation is its square root:

\sigma = \sqrt{\frac{46597799}{26214400}-\ln(2)\frac{4520637}{5242880}-\ln^2(2)\frac{19527561}{104857600}} \approx 1.04424.

The standard deviation of rnz(x), then, is 1.04424x, or 365.483 for an ordinary prayer timeout. (Actually, it is 365.344, so the error introduced by treating Z as continuous is quite small.)


This page may need to be updated for the current version of NetHack.

It may contain text specific to NetHack 3.4.3. Information on this page may be out of date.

Editors: After reviewing this page and making necessary edits, please change the {{nethack-343}} tag to the current version's tag or {{noversion}} as appropriate.