I’ve recently been studing for a professional exam that does not allow computers or advanced calculators. Some of the subject matter will require use of a few statistical distributions which can be very time-consuming to calculate manually. In lieu of access to statistical functions, you are allowed to bring books and some reference sheets. I wanted to see if I could recreate these distribution tables in R.

Generating distribution values is very simple in R. The d, q, p, and r functions are all that you will need to fill in the table values. The table below is for the t distribution.

alpha <- c(.1, .05, .025, .01, .005)
v <- c(seq(1, 30, by = 1), Inf)
tTable <- sapply((1-alpha), function(x) qt(x, df = v))
colnames(tTable) <- alpha


I’m using the xtable package here to format my table. It has some handy options to parse math symbols and notations with its sanitize.text print options and allows more customization of table style than the kable function in knitr. I’m setting some of style options below.

options(xtable.type = 'html',
xtable.caption.placement = "top",
xtable.include.rownames = FALSE,


When rendering the table, you can use LaTeX notation within the data of the table and have it parsed into math notation.

library(xtable)

tTable <- data.frame("$v \\big\\backslash \\alpha$" = paste0("", v, ""),
tTable,
stringsAsFactors = FALSE,
check.names = FALSE)
tTable[[1]][tTable[[1]] == "Inf"] <- "$\\infty$"
tTable <- xtable(tTable,
caption = "Table 3: Percentiles of the *t* Distribution",
align = rep("c", ncol(tTable)+1),
digits = 4)
print(tTable)

Table 3: Percentiles of the *t* Distribution
$$v \big\backslash \alpha$$ 0.1 0.05 0.025 0.01 0.005
1 3.0777 6.3138 12.7062 31.8205 63.6567
2 1.8856 2.9200 4.3027 6.9646 9.9248
3 1.6377 2.3534 3.1824 4.5407 5.8409
4 1.5332 2.1318 2.7764 3.7469 4.6041
5 1.4759 2.0150 2.5706 3.3649 4.0321
6 1.4398 1.9432 2.4469 3.1427 3.7074
7 1.4149 1.8946 2.3646 2.9980 3.4995
8 1.3968 1.8595 2.3060 2.8965 3.3554
9 1.3830 1.8331 2.2622 2.8214 3.2498
10 1.3722 1.8125 2.2281 2.7638 3.1693
11 1.3634 1.7959 2.2010 2.7181 3.1058
12 1.3562 1.7823 2.1788 2.6810 3.0545
13 1.3502 1.7709 2.1604 2.6503 3.0123
14 1.3450 1.7613 2.1448 2.6245 2.9768
15 1.3406 1.7531 2.1314 2.6025 2.9467
16 1.3368 1.7459 2.1199 2.5835 2.9208
17 1.3334 1.7396 2.1098 2.5669 2.8982
18 1.3304 1.7341 2.1009 2.5524 2.8784
19 1.3277 1.7291 2.0930 2.5395 2.8609
20 1.3253 1.7247 2.0860 2.5280 2.8453
21 1.3232 1.7207 2.0796 2.5176 2.8314
22 1.3212 1.7171 2.0739 2.5083 2.8188
23 1.3195 1.7139 2.0687 2.4999 2.8073
24 1.3178 1.7109 2.0639 2.4922 2.7969
25 1.3163 1.7081 2.0595 2.4851 2.7874
26 1.3150 1.7056 2.0555 2.4786 2.7787
27 1.3137 1.7033 2.0518 2.4727 2.7707
28 1.3125 1.7011 2.0484 2.4671 2.7633
29 1.3114 1.6991 2.0452 2.4620 2.7564
30 1.3104 1.6973 2.0423 2.4573 2.7500
$$\infty$$ 1.2816 1.6449 1.9600 2.3263 2.5758

I also wanted to include a plot of the distribution and describe what the values are visually. ?mathplot provides a guide to writing math notation in expression to show math notation in plots. More information on how the math notation will look is available here.

library(ggplot2)

x <- seq(-3.5, 3.5, by = .001)
ggplot() +
geom_ribbon(aes(x = seq(qnorm(.95), max(x), by = .001),
ymin = 0,
ymax = dnorm(seq(qnorm(.95), max(x), by = .001))),
fill = 'gray') +
geom_vline(xintercept = 0, color = "black") +
geom_hline(yintercept = 0, color = "black") +
stat_function(data = data.frame(x=x),aes(x = x),
fun = dnorm,
size = 1) +
geom_segment(aes(x = qnorm(.95),
y = 0,
xend = qnorm(.95),
yend = dnorm(qnorm(.95))
),

color = 'black') +
theme_void() +
theme(plot.margin = unit(c(.1,.1,.1,.1), "cm")) +
annotate(geom = 'text',
x = c(qnorm(.95)),
y = c(-.04),
label = c(expression(t[paste(alpha,',',v)])),
size = 4,
parse = TRUE) +
coord_cartesian(ylim = c(-.06, dnorm(qnorm(.5))))


Below, is the code for the rest of the tables. I’ve also placed a printable version here.

## $$\text{Normal Distribution}$$

x <- seq(-3.5, 3.5, by = .001)
ggplot() +
geom_ribbon(aes(x = seq(min(x), qnorm(.95), by = .001),
ymin = 0,
ymax = dnorm(seq(min(x), qnorm(.95), by = .001))),
fill = 'gray') +
geom_vline(xintercept = 0, color = "black") +
geom_hline(yintercept = 0, color = "black") +
stat_function(data = data.frame(x=x),aes(x = x),
fun = dnorm,
size = 1) +
geom_segment(aes(x = qnorm(.95),
y = 0,
xend = qnorm(.95),
yend = dnorm(qnorm(.95))
),

color = 'black') +
theme_void() +
theme(plot.margin = unit(c(.1,.1,.1,.1), "cm")) +
annotate(geom = 'text',
x = c(qnorm(.95)),
y = c(-.04),
label = c(expression(z[alpha])),
size = 4,
parse = TRUE) +
coord_cartesian(ylim = c(-.06, dnorm(qnorm(.5))))


normalTable <- matrix(round(pnorm(seq(0, 3.49, by = .01)), 4),
ncol = 10,
byrow = TRUE)
colnames(normalTable) <- seq(0, .09, by = .01)
z <- sprintf("%01.1f", seq(0, 3.4, by = .1))
normalTable <- data.frame("$z$" = paste0("", z, ""),
normalTable,
stringsAsFactors = FALSE)
colnames(normalTable) <- c("z", seq(0, .09, by = .01))
normalTable <- xtable(normalTable,
caption = "Table 2: Cumulative Probabilities of the Standard Normal Distribution, $X \\sim N(0,1)$",
align = rep("c", ncol(normalTable)+1),
digits = 4)
print(normalTable)

Table 2: Cumulative Probabilities of the Standard Normal Distribution, $$X \sim N(0,1)$$
z 0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09
0.0 0.5000 0.5040 0.5080 0.5120 0.5160 0.5199 0.5239 0.5279 0.5319 0.5359
0.1 0.5398 0.5438 0.5478 0.5517 0.5557 0.5596 0.5636 0.5675 0.5714 0.5753
0.2 0.5793 0.5832 0.5871 0.5910 0.5948 0.5987 0.6026 0.6064 0.6103 0.6141
0.3 0.6179 0.6217 0.6255 0.6293 0.6331 0.6368 0.6406 0.6443 0.6480 0.6517
0.4 0.6554 0.6591 0.6628 0.6664 0.6700 0.6736 0.6772 0.6808 0.6844 0.6879
0.5 0.6915 0.6950 0.6985 0.7019 0.7054 0.7088 0.7123 0.7157 0.7190 0.7224
0.6 0.7257 0.7291 0.7324 0.7357 0.7389 0.7422 0.7454 0.7486 0.7517 0.7549
0.7 0.7580 0.7611 0.7642 0.7673 0.7704 0.7734 0.7764 0.7794 0.7823 0.7852
0.8 0.7881 0.7910 0.7939 0.7967 0.7995 0.8023 0.8051 0.8078 0.8106 0.8133
0.9 0.8159 0.8186 0.8212 0.8238 0.8264 0.8289 0.8315 0.8340 0.8365 0.8389
1.0 0.8413 0.8438 0.8461 0.8485 0.8508 0.8531 0.8554 0.8577 0.8599 0.8621
1.1 0.8643 0.8665 0.8686 0.8708 0.8729 0.8749 0.8770 0.8790 0.8810 0.8830
1.2 0.8849 0.8869 0.8888 0.8907 0.8925 0.8944 0.8962 0.8980 0.8997 0.9015
1.3 0.9032 0.9049 0.9066 0.9082 0.9099 0.9115 0.9131 0.9147 0.9162 0.9177
1.4 0.9192 0.9207 0.9222 0.9236 0.9251 0.9265 0.9279 0.9292 0.9306 0.9319
1.5 0.9332 0.9345 0.9357 0.9370 0.9382 0.9394 0.9406 0.9418 0.9429 0.9441
1.6 0.9452 0.9463 0.9474 0.9484 0.9495 0.9505 0.9515 0.9525 0.9535 0.9545
1.7 0.9554 0.9564 0.9573 0.9582 0.9591 0.9599 0.9608 0.9616 0.9625 0.9633
1.8 0.9641 0.9649 0.9656 0.9664 0.9671 0.9678 0.9686 0.9693 0.9699 0.9706
1.9 0.9713 0.9719 0.9726 0.9732 0.9738 0.9744 0.9750 0.9756 0.9761 0.9767
2.0 0.9772 0.9778 0.9783 0.9788 0.9793 0.9798 0.9803 0.9808 0.9812 0.9817
2.1 0.9821 0.9826 0.9830 0.9834 0.9838 0.9842 0.9846 0.9850 0.9854 0.9857
2.2 0.9861 0.9864 0.9868 0.9871 0.9875 0.9878 0.9881 0.9884 0.9887 0.9890
2.3 0.9893 0.9896 0.9898 0.9901 0.9904 0.9906 0.9909 0.9911 0.9913 0.9916
2.4 0.9918 0.9920 0.9922 0.9925 0.9927 0.9929 0.9931 0.9932 0.9934 0.9936
2.5 0.9938 0.9940 0.9941 0.9943 0.9945 0.9946 0.9948 0.9949 0.9951 0.9952
2.6 0.9953 0.9955 0.9956 0.9957 0.9959 0.9960 0.9961 0.9962 0.9963 0.9964
2.7 0.9965 0.9966 0.9967 0.9968 0.9969 0.9970 0.9971 0.9972 0.9973 0.9974
2.8 0.9974 0.9975 0.9976 0.9977 0.9977 0.9978 0.9979 0.9979 0.9980 0.9981
2.9 0.9981 0.9982 0.9982 0.9983 0.9984 0.9984 0.9985 0.9985 0.9986 0.9986
3.0 0.9987 0.9987 0.9987 0.9988 0.9988 0.9989 0.9989 0.9989 0.9990 0.9990
3.1 0.9990 0.9991 0.9991 0.9991 0.9992 0.9992 0.9992 0.9992 0.9993 0.9993
3.2 0.9993 0.9993 0.9994 0.9994 0.9994 0.9994 0.9994 0.9995 0.9995 0.9995
3.3 0.9995 0.9995 0.9995 0.9996 0.9996 0.9996 0.9996 0.9996 0.9996 0.9997
3.4 0.9997 0.9997 0.9997 0.9997 0.9997 0.9997 0.9997 0.9997 0.9997 0.9998

## $$t \text{ Distribution}$$

x <- seq(-3.5, 3.5, by = .001)
ggplot() +
geom_ribbon(aes(x = seq(qnorm(.95), max(x), by = .001),
ymin = 0,
ymax = dnorm(seq(qnorm(.95), max(x), by = .001))),
fill = 'gray') +
geom_vline(xintercept = 0, color = "black") +
geom_hline(yintercept = 0, color = "black") +
stat_function(data = data.frame(x=x),aes(x = x),
fun = dnorm,
size = 1) +
geom_segment(aes(x = qnorm(.95),
y = 0,
xend = qnorm(.95),
yend = dnorm(qnorm(.95))
),

color = 'black') +
theme_void() +
theme(plot.margin = unit(c(.1,.1,.1,.1), "cm")) +
annotate(geom = 'text',
x = c(qnorm(.95)),
y = c(-.04),
label = c(expression(t[paste(alpha,',',v)])),
size = 4,
parse = TRUE) +
coord_cartesian(ylim = c(-.06, dnorm(qnorm(.5))))


alpha <- c(.1, .05, .025, .01, .005)
v <- c(seq(1, 30, by = 1), Inf)
tTable <- sapply((1-alpha), function(x) qt(x, df = v))
colnames(tTable) <- alpha
tTable <- data.frame("$v \\big\\backslash \\alpha$" = paste0("", v, ""),
tTable,
stringsAsFactors = FALSE,
check.names = FALSE)
tTable[[1]][tTable[[1]] == "Inf"] <- "$\\infty$"
tTable <- xtable(tTable,
caption = "Table 3: Percentiles of the *t* Distribution",
align = rep("c", ncol(tTable)+1),
digits = 4)
print(tTable)

Table 3: Percentiles of the *t* Distribution
$$v \big\backslash \alpha$$ 0.1 0.05 0.025 0.01 0.005
1 3.0777 6.3138 12.7062 31.8205 63.6567
2 1.8856 2.9200 4.3027 6.9646 9.9248
3 1.6377 2.3534 3.1824 4.5407 5.8409
4 1.5332 2.1318 2.7764 3.7469 4.6041
5 1.4759 2.0150 2.5706 3.3649 4.0321
6 1.4398 1.9432 2.4469 3.1427 3.7074
7 1.4149 1.8946 2.3646 2.9980 3.4995
8 1.3968 1.8595 2.3060 2.8965 3.3554
9 1.3830 1.8331 2.2622 2.8214 3.2498
10 1.3722 1.8125 2.2281 2.7638 3.1693
11 1.3634 1.7959 2.2010 2.7181 3.1058
12 1.3562 1.7823 2.1788 2.6810 3.0545
13 1.3502 1.7709 2.1604 2.6503 3.0123
14 1.3450 1.7613 2.1448 2.6245 2.9768
15 1.3406 1.7531 2.1314 2.6025 2.9467
16 1.3368 1.7459 2.1199 2.5835 2.9208
17 1.3334 1.7396 2.1098 2.5669 2.8982
18 1.3304 1.7341 2.1009 2.5524 2.8784
19 1.3277 1.7291 2.0930 2.5395 2.8609
20 1.3253 1.7247 2.0860 2.5280 2.8453
21 1.3232 1.7207 2.0796 2.5176 2.8314
22 1.3212 1.7171 2.0739 2.5083 2.8188
23 1.3195 1.7139 2.0687 2.4999 2.8073
24 1.3178 1.7109 2.0639 2.4922 2.7969
25 1.3163 1.7081 2.0595 2.4851 2.7874
26 1.3150 1.7056 2.0555 2.4786 2.7787
27 1.3137 1.7033 2.0518 2.4727 2.7707
28 1.3125 1.7011 2.0484 2.4671 2.7633
29 1.3114 1.6991 2.0452 2.4620 2.7564
30 1.3104 1.6973 2.0423 2.4573 2.7500
$$\infty$$ 1.2816 1.6449 1.9600 2.3263 2.5758

## $$\chi^2 \text{ Distribution}$$

x <- seq(0, 30, .01)
v <- 10
ggplot() +
geom_ribbon(aes(x = seq(qchisq(.95, df = v), max(x), by = .001),
ymin = 0,
ymax = dchisq(seq(qchisq(.95, df = v), max(x), by = .001),
df = v)
),
fill = 'gray') +
geom_vline(xintercept = 0, color = "black") +
geom_hline(yintercept = 0, color = "black") +
stat_function(data = data.frame(x=x),aes(x = x),
fun = dchisq,
args = list(df = v),
size = 1) +
geom_segment(aes(x = qchisq(.95, df = v),
y = 0,
xend = qchisq(.95, df = v),
yend = dchisq(qchisq(.95, df = v), df = v)
),

color = 'black') +
theme_void() +
theme(plot.margin = unit(c(.1,.1,.1,.1), "cm")) +
annotate(geom = 'text',
x = c(qchisq(.95, df = v)),
y = c(-.015),
label = c(expression( paste(Chi^2)[paste(alpha,',','v')])),
size = 4,
parse = TRUE) +
coord_cartesian(ylim = c(-.02, dchisq(qchisq(.5, df = v), df = v)))


Table 4: Percentiles of the $$\chi^2$$ Distribution
$$v \big\backslash \alpha$$ 0.995 0.99 0.975 0.95 0.9 0.75 0.5 0.25 0.1 0.05 0.025 0.01 0.005 0.001
1 0.00 0.00 0.00 0.00 0.02 0.10 0.45 1.32 2.71 3.84 5.02 6.63 7.88 10.83
2 0.01 0.02 0.05 0.10 0.21 0.58 1.39 2.77 4.61 5.99 7.38 9.21 10.60 13.82
3 0.07 0.11 0.22 0.35 0.58 1.21 2.37 4.11 6.25 7.81 9.35 11.34 12.84 16.27
4 0.21 0.30 0.48 0.71 1.06 1.92 3.36 5.39 7.78 9.49 11.14 13.28 14.86 18.47
5 0.41 0.55 0.83 1.15 1.61 2.67 4.35 6.63 9.24 11.07 12.83 15.09 16.75 20.52
6 0.68 0.87 1.24 1.64 2.20 3.45 5.35 7.84 10.64 12.59 14.45 16.81 18.55 22.46
7 0.99 1.24 1.69 2.17 2.83 4.25 6.35 9.04 12.02 14.07 16.01 18.48 20.28 24.32
8 1.34 1.65 2.18 2.73 3.49 5.07 7.34 10.22 13.36 15.51 17.53 20.09 21.95 26.12
9 1.73 2.09 2.70 3.33 4.17 5.90 8.34 11.39 14.68 16.92 19.02 21.67 23.59 27.88
10 2.16 2.56 3.25 3.94 4.87 6.74 9.34 12.55 15.99 18.31 20.48 23.21 25.19 29.59
11 2.60 3.05 3.82 4.57 5.58 7.58 10.34 13.70 17.28 19.68 21.92 24.72 26.76 31.26
12 3.07 3.57 4.40 5.23 6.30 8.44 11.34 14.85 18.55 21.03 23.34 26.22 28.30 32.91
13 3.57 4.11 5.01 5.89 7.04 9.30 12.34 15.98 19.81 22.36 24.74 27.69 29.82 34.53
14 4.07 4.66 5.63 6.57 7.79 10.17 13.34 17.12 21.06 23.68 26.12 29.14 31.32 36.12
15 4.60 5.23 6.26 7.26 8.55 11.04 14.34 18.25 22.31 25.00 27.49 30.58 32.80 37.70
16 5.14 5.81 6.91 7.96 9.31 11.91 15.34 19.37 23.54 26.30 28.85 32.00 34.27 39.25
17 5.70 6.41 7.56 8.67 10.09 12.79 16.34 20.49 24.77 27.59 30.19 33.41 35.72 40.79
18 6.26 7.01 8.23 9.39 10.86 13.68 17.34 21.60 25.99 28.87 31.53 34.81 37.16 42.31
19 6.84 7.63 8.91 10.12 11.65 14.56 18.34 22.72 27.20 30.14 32.85 36.19 38.58 43.82
20 7.43 8.26 9.59 10.85 12.44 15.45 19.34 23.83 28.41 31.41 34.17 37.57 40.00 45.31
21 8.03 8.90 10.28 11.59 13.24 16.34 20.34 24.93 29.62 32.67 35.48 38.93 41.40 46.80
22 8.64 9.54 10.98 12.34 14.04 17.24 21.34 26.04 30.81 33.92 36.78 40.29 42.80 48.27
23 9.26 10.20 11.69 13.09 14.85 18.14 22.34 27.14 32.01 35.17 38.08 41.64 44.18 49.73
24 9.89 10.86 12.40 13.85 15.66 19.04 23.34 28.24 33.20 36.42 39.36 42.98 45.56 51.18
25 10.52 11.52 13.12 14.61 16.47 19.94 24.34 29.34 34.38 37.65 40.65 44.31 46.93 52.62
30 13.79 14.95 16.79 18.49 20.60 24.48 29.34 34.80 40.26 43.77 46.98 50.89 53.67 59.70
40 20.71 22.16 24.43 26.51 29.05 33.66 39.34 45.62 51.81 55.76 59.34 63.69 66.77 73.40
50 27.99 29.71 32.36 34.76 37.69 42.94 49.33 56.33 63.17 67.50 71.42 76.15 79.49 86.66
60 35.53 37.48 40.48 43.19 46.46 52.29 59.33 66.98 74.40 79.08 83.30 88.38 91.95 99.61
70 43.28 45.44 48.76 51.74 55.33 61.70 69.33 77.58 85.53 90.53 95.02 100.43 104.21 112.32
80 51.17 53.54 57.15 60.39 64.28 71.14 79.33 88.13 96.58 101.88 106.63 112.33 116.32 124.84
90 59.20 61.75 65.65 69.13 73.29 80.62 89.33 98.65 107.57 113.15 118.14 124.12 128.30 137.21
100 67.33 70.06 74.22 77.93 82.36 90.13 99.33 109.14 118.50 124.34 129.56 135.81 140.17 149.45

## $$F(v_1, v_2) \text{ Distribution}$$

x <- seq(0, 5, .01)
v1 <- 10
v2 <- 10
ggplot() +
geom_ribbon(aes(x = seq(qf(.95, df1 = v1, df2 = v2), max(x), by = .001),
ymin = 0,
ymax = df(seq(qf(.95, df1 = v1, df2 = v2), max(x), by = .001),
df1 = v1, df2 = v2)
),
fill = 'gray') +
geom_vline(xintercept = 0, color = "black") +
geom_hline(yintercept = 0, color = "black") +
stat_function(data = data.frame(x=x),aes(x = x),
fun = df,
args = list(df1 = v1, df2 = v2),
size = 1) +
geom_segment(aes(x = qf(.95, df1 = v1, df2 = v2),
y = 0,
xend = qf(.95, df1 = v1, df2 = v2),
yend = df(qf(.95, df1 = v1, df2 = v2), df1 = v1, df2 = v2)
),

color = 'black') +
theme_void() +
theme(plot.margin = unit(c(.1,.1,.1,.1), "cm")) +
annotate(geom = 'text',
x = c(qf(.95, df1 = v1, df2 = v2)),
y = c(-.07),
label = c(expression(F(paste(v1,',',v2)))),
size = 4,
parse = TRUE) +
coord_cartesian(ylim = c(-.07, df(qf(.25, df1 = v1, df2 = v2), df1 = v1, df2 = v2)))


v1 <- c(seq(1, 10, by = 1), 12, 15, 20, 24, 30, 40, 60, 120, Inf)
v2 <- v1
fTable95 <- sapply(v1, function(x) round(qf(.95, x, v2), 2))
colnames(fTable95) <- v1
colnames(fTable95)[colnames(fTable95) == 'Inf'] <- "$\\infty$"
fTable95 <- data.frame("$v_2 \\big\\backslash v_1$" = paste0("", v2, ""),
fTable95,
stringsAsFactors = FALSE,
check.names = FALSE)
fTable95[[1]][fTable95[[1]] == "Inf"] <- "$\\infty$"
fTable95 <- xtable(fTable95,
caption = "Table 5: 95th Percentiles of the $F(v_1,v_2)$",
align = rep("c", ncol(fTable95)+1))

print(fTable95)

Table 5: 95th Percentiles of the $$F(v_1,v_2)$$
$$v_2 \big\backslash v_1$$ 1 2 3 4 5 6 7 8 9 10 12 15 20 24 30 40 60 120 $$\infty$$
1 161.45 199.50 215.71 224.58 230.16 233.99 236.77 238.88 240.54 241.88 243.91 245.95 248.01 249.05 250.10 251.14 252.20 253.25 254.31
2 18.51 19.00 19.16 19.25 19.30 19.33 19.35 19.37 19.38 19.40 19.41 19.43 19.45 19.45 19.46 19.47 19.48 19.49 19.50
3 10.13 9.55 9.28 9.12 9.01 8.94 8.89 8.85 8.81 8.79 8.74 8.70 8.66 8.64 8.62 8.59 8.57 8.55 8.53
4 7.71 6.94 6.59 6.39 6.26 6.16 6.09 6.04 6.00 5.96 5.91 5.86 5.80 5.77 5.75 5.72 5.69 5.66 5.63
5 6.61 5.79 5.41 5.19 5.05 4.95 4.88 4.82 4.77 4.74 4.68 4.62 4.56 4.53 4.50 4.46 4.43 4.40 4.36
6 5.99 5.14 4.76 4.53 4.39 4.28 4.21 4.15 4.10 4.06 4.00 3.94 3.87 3.84 3.81 3.77 3.74 3.70 3.67
7 5.59 4.74 4.35 4.12 3.97 3.87 3.79 3.73 3.68 3.64 3.57 3.51 3.44 3.41 3.38 3.34 3.30 3.27 3.23
8 5.32 4.46 4.07 3.84 3.69 3.58 3.50 3.44 3.39 3.35 3.28 3.22 3.15 3.12 3.08 3.04 3.01 2.97 2.93
9 5.12 4.26 3.86 3.63 3.48 3.37 3.29 3.23 3.18 3.14 3.07 3.01 2.94 2.90 2.86 2.83 2.79 2.75 2.71
10 4.96 4.10 3.71 3.48 3.33 3.22 3.14 3.07 3.02 2.98 2.91 2.85 2.77 2.74 2.70 2.66 2.62 2.58 2.54
12 4.75 3.89 3.49 3.26 3.11 3.00 2.91 2.85 2.80 2.75 2.69 2.62 2.54 2.51 2.47 2.43 2.38 2.34 2.30
15 4.54 3.68 3.29 3.06 2.90 2.79 2.71 2.64 2.59 2.54 2.48 2.40 2.33 2.29 2.25 2.20 2.16 2.11 2.07
20 4.35 3.49 3.10 2.87 2.71 2.60 2.51 2.45 2.39 2.35 2.28 2.20 2.12 2.08 2.04 1.99 1.95 1.90 1.84
24 4.26 3.40 3.01 2.78 2.62 2.51 2.42 2.36 2.30 2.25 2.18 2.11 2.03 1.98 1.94 1.89 1.84 1.79 1.73
30 4.17 3.32 2.92 2.69 2.53 2.42 2.33 2.27 2.21 2.16 2.09 2.01 1.93 1.89 1.84 1.79 1.74 1.68 1.62
40 4.08 3.23 2.84 2.61 2.45 2.34 2.25 2.18 2.12 2.08 2.00 1.92 1.84 1.79 1.74 1.69 1.64 1.58 1.51
60 4.00 3.15 2.76 2.53 2.37 2.25 2.17 2.10 2.04 1.99 1.92 1.84 1.75 1.70 1.65 1.59 1.53 1.47 1.39
120 3.92 3.07 2.68 2.45 2.29 2.18 2.09 2.02 1.96 1.91 1.83 1.75 1.66 1.61 1.55 1.50 1.43 1.35 1.25
$$\infty$$ 3.84 3.00 2.60 2.37 2.21 2.10 2.01 1.94 1.88 1.83 1.75 1.67 1.57 1.52 1.46 1.39 1.32 1.22 1.00