Цитата:
Здесь подошел бы способ, который предложил Igor Borovikov, но такое решение работает гораздо медленней предыдущего (для большого количества точек) и не известно изначально точное колличество точек, которые будут спроецированы на поверхность сферы.
Количество "полезных" точек посчитать легко - отношение объема шара к объему куба:

то есть прмерно половина точек - полезные.
Насчет "гораздо медленней" - ну, наверное, раза в три. Вот грубая прикидка:
"Кубический" способ:
- породить ТРИ случайных числа - координаты точки
- узнать расстояние до центра т.е. посчитать корень квадратный суммы квадратов координат
- сравнить с радиусом
- сравнить с выбранным малым числом - во избежание деления на ноль
- координаты поделить на расстояние
Далее все зависит от того в какой форме нужен ответ - в сферических или декартовых координатах. Мелкая оптимизация - например, сравнивать с радиусом и малым числом _квадрат_ расстояния - не в счет.
"Сферический" способ:
- породить ДВА случайных числа - одно для z другое для угола a
- вычислить радиус r на высоте z т.е.
- посчитать y = r*sin(a) и x = r*cos(a)
Вычисление третьего случайного числа, скорее всего, главный недостаток "кубического" алгоритма. Два дополнительных сравнения - тоже не в пользу "кубического" подхода. По остальным операциям - прмерно тоже самое... вопрос только с какой скоростью считается тригонометрия на Вашем железе.
Окончательно, с учетом того, что только половина точек пойдет в дело, видим что "кубический" способ примерно в 2.5-3 раза меделенней.