Я думаю, что вы можете сделать это рекурсивно. Начните с полного ортонормированного базиса вашего векторного пространства, и пусть текущее местоположение будет происходить. На каждом шаге выберите точку в плоскости, натянутой на первые два вектора координат, т. Е. Возьмем w1 = cos (t) * v1 + sin (t) * v2. Сдвиг других базисных векторов, т. Е. W2 = v3, w3 = v4, .... Также сделайте шаг от вашего текущего положения в направлении w1, с радиусом r1, выбранным спереди. Когда у вас остался только один базисный вектор, то текущая точка является точкой на n-мерном торе самого внешнего рекурсивного вызова.
Обратите внимание, что в то время как вышеупомянутое может использоваться для случайного выбора точек, оно не будет выбирать их равномерно. Вероятно, это будет гораздо сложнее, и вы обязательно должны спросить о математике этого вопроса на Math SE или, возможно, на Cross Validated (Statistics SE), чтобы получить математику, прежде чем беспокоиться о ее реализации.