Насколько я могу судить, функция numpy.random.dirichlet
работает как задумано. Я думаю, вы, возможно, немного не понимаете, что такое дистрибутив Дирихле.
k-мерное распределение Дирихле будет иметь k параметров (от x_1 до x_k), которые должны все сложиться в 1. Если вы попробуете sum(np.random.dirichlet([1, 1, 1, 1]))
, результат всегда будет равен 1 (дать или принять некоторую ошибку округления ). Таким образом, хотя np.random.dirichlet([1, 1, 1, 1]))
действительно является однородным по своей поддержке, эта поддержка ограничена требованием, что x_1 + x_2 + x_3 + x_4 = 1, и выходной массив не будет распределен в формате Unif (0, 1).
Эта статья дает относительно простое и нетехническое объяснение концепции.