I started on this quest to find an accurate value for A2424. Monte Carlo sampling of directions from the simplex didn’t work. But the probability theory may still work. Remember that for a particular 24-hedral angle we want the probability that the mean of 25 samples from a normal distribution is less than all but the first sample. It is important to note that by “first” we mean the first sample, not the smallest. There is no sorting or ranking supposed in this version of the exercise. If we divide the 25 samples into two sets, the first and the rest, we have a probability distribution for the minimum of the 24 samples.

The transformed problem is now: take 24 samples from a normal distribution.


I put the scheme above on hold while I look into another. (P.S. This scheme works!) We want to find the n-content of the intersection of a regular n-simplex (edge length = 1) with an n-ball of radius 1/2, and with center at a vertex of the simplex. Here I use barycentric coordinates which is equivalent to the embedding in n+1 dimensions. The idea is to sample the simplex uniformly and see how much of it is in the ball.

The first task is to see how big we can make the radius, for both the ball and the intersection of the ball and the simplex have content proportional to rn. Its maximum size is when it touches the face opposite the vertex where its center is located. If the center is at <1, 0, 0, ...> then the closest point on the opposite face is at <0, 1/n, 1/n, ...>. The distance between these two points is √(gijΔxiΔxj) using the metric for our oblique barycentric coordinates introduced half way thru here.
In C speak, gij = i == j ? 1 : 1/2.
The implicit summations above run from 1 to n when we number the coordinates thus: <x0, x1, x2, ... xn>, barycentric coordinates are redundant and we omit the 0th here. The ball center is at vertex 0. That is tantamount to taking the n edges from the vertex at our ball center as basis vectors for our oblique coordinate system.

We define the altitude of a simplex as the distance of a vertex from the opposite face. The vertex is at xi = 0 and the closest point in the opposite face in our regular n-simplex is xi = 1/n. Δxi = 1/n.
Altitude = √(gijΔxiΔxj) = √((n + n*(n-1)/2)*(1/n)*(1/n)) = √((1 + 1/n)/2).

For 24D the altitude = √(25/48) = .72168 . This is enough bigger than 1/2, for large n, that increasing r by that ratio substantially increases rn and our Monte Carlo efficiency accordingly.

How to Choose a Random Point Inside a Simplex

Second best idea

We slice an n-simplex into equal thickness (n−1)-simplexes in a direction parallel to face j of the n-simplex. We then choose one of these slices randomly. Barycentric coordinates xj of a point in the n-simplex determines which slice the point is in. The (n−1)-content of a slice is proportional to (1−xj)n−1. We must bias our slice selection by slice content. Having chosen a slice we recursively choose a point in the slice which is a (n−1)-simplex. This will result in an unbiased point selection within the n-simplex. We must then test if the point lies in the expanded ball. The above application of the metric is a direct calculation.

To select a number X in (0, 1) with a pdf (probability density function) proportional to xn, compute X = u1/(n+1) where u is chosen from U{0, 1}. This selects a slice which is a simplex whose edges are (1−X) times the edge of the sliced simplex.

An Even Better Way to Choose a Point

This is simpler and faster: Choose a set of 24 samples from U{0, 1}. Add 0 and 1 to the set. Sort the set. 0 = x0 < x1 < x3 ... < x24 < x25 = 1. Let yi = xi+1 − xi for 0 ≤ i < 25. Σyi = 1 and yi ≥ 0. The 25 y’s are the BC coordinates of a uniformly distributed random point in the 24D simplex.

Taking the ball’s origin to be at vertex 0 leaves us the task of deciding which sample points are in the ball. In the rest of this page i and j range from 1 thru 24. We evaluate gijyiyj.
We split gij = δij/2 + 1/2 where δij = i==j ? 1 : 0.
If r is the distance of the random point from the ball center then
r2 = gijyiyj = (δij/2 + 1/2)yiyj = δijyiyj/2 + ΣiΣjyiyj/2 = Σj(yj)2/2 + (Σiyi)(Σjyj)/2.
Σjyj= 1 − y0 since the sum of the n+1 coordinates is 1.
We come thus to 2r2 = Σj(yj)2 + (1 − y0)2.

Here is code using this scheme to pick points in an n-simplex and report what fraction is within the n-ball centered at a vertex and tangent to the opposite face.

We now need the content of the n-simplex and n-ball. This Scheme program indicates that the determinant, g, of our oblique metric tensor is (n+1)2−n. The content of a parallelepiped with basis vectors as edges is √g, and the simplex content is (√g)/n!. The content of our regular unit n-simplex is thus 2−n/2√(n+1)/n!. The content of the n-ball is rnπn/2/(n/2)!.

Let “s” be the regular unit n-simplex. Let “b(r)” be the ball (set of points) of radius r and center at vertex 0 of s. Let “c(t)” be the content (n-dimensional volume) of point set t. Let an = √((1 + 1/n)/2), be the altitude of s (distance between vertex and opposite face). b(an) is the ball that is tangent to face 0. Our statistics show that when n=24, c(b(an)∩s)/c(s) ≅ .6565 . c(s) = 2−n/2√(n+1)/n!. c(b(an)) = annπn/2/(n/2)! .

We want the fraction of the ball in the simplex: c(b(an)∩s)/c(b(an)). For n=24:
c(s) = 10−271.967453090
a24 = .7216878366
c(b(a24)) = 10−77.688591115385
c(b(an)∩s) = 10−271.2916
c(b(an)∩s)/c(b(a24)) = A2424 = 10−211.67989
α2424 = 10−237.7795
angle diameter = (α2424)1/23 = 0.1093

Some results from the code (ss=1000000):
nc(s)c(ball)Ann αnn
2.43302.356.16661.047
3.1178512.28009.438905.551544
64.59332e-041.025773.40688e-041.05635e-02
121.17613e-103.37256e-022.43148e-093.89599e-08
241.96745e-277.68859e-071.68101e-217.78474e-23
Note that α33 = .551286 by spherical trigonometry.