Мне нужно создать несколько (скажем, 100 000) случайных наборов авуаров для пользователей, которые могут держать несколько авуаров.Для любого данного пользователя эти авуары должны быть равны 1. Теоретически, генерация этих случайных авуаров может быть достаточно легко выполнена в виде цифры:
num_users = 100000
num_holdings = 8
random_holdings = np.random.rand(num_users, num_holdings)
random_holdings /= np.sum(random_holdings, axis=1, keepdims=True)
Это дает нам
random_holdings
array([[0.044, 0.169, 0.204, ..., 0.051, 0.116, 0.176],
[0.132, 0.078, 0.23 , ..., 0.102, 0.028, 0.204],
[0.036, 0.182, 0.165, ..., 0.138, 0.065, 0.04 ],
...,
[0.195, 0.028, 0.136, ..., 0.147, 0.113, 0.22 ],
[0.19 , 0.237, 0.061, ..., 0.23 , 0.109, 0.046],
[0.181, 0.111, 0.1 , ..., 0.166, 0.126, 0.199]])
.проблема заключается в том, что это приводит ко многим подобным наборам авуаров и относительно небольшому количеству наборов сконцентрированных авуаров.Например:
len(np.where(random_holdings > 0.5)[0])
дает результат 24, то есть из всех 100 000, которые больше 0,5, есть только 24 холдинга.
Может кто-нибудь любезно порекомендовать лучший метод рандомизацииили просто более разумный общий подход, чтобы у меня было меньше похожих наборов авуаров и более концентрированных наборов авуаров?
Спасибо!