Here is a three-step approach. 1a) Make more points than you need. 1b) Remove some. 2) Adjust the rest.
1a) To make more points that you need, take any quasiregular polyhedron with sides that tessellate (triangles, squares, diamonds). Tessellate spherical gradients by subsection, creating more vertices. For example, if you use a regular icosahedron, you get geodesic domes. (Dividing by 2, you get a double value for the C 60 buckyball.) Developing exact formulas is not difficult. The number of new vertices per face is quadratic in the partition.
1b) Accidentally remove enough points to reduce you to the target number.
2) Use the force-directed layout algorithm to redistribute vertices over the sphere. The base strength graph is the one provided by the closest neighbors in your base tessellation.
There are other ways to do step 1), for example, just generate random points in any distribution. However, there is an advantage to starting with a quasiregular figure. In some cases, force-oriented algorithms have a reputation for poor convergence. Starting with something that is already basically optimal, you will get past most of all the convergence issues you may have.
source share