This flaw results is the assertions like the following one:
```
/usr/include/c++/11/bits/random.tcc:2667: void std::discrete_distribution<_IntType>::param_type::_M_initialize() [with _IntType = int]: Assertion '__sum > 0' failed.
Aborted (core dumped)
```
The reason behind is that `std::discrete_distribution` sums
the weights and uses the result as a divisor.
Fixes: https://tracker.ceph.com/issues/62645
Signed-off-by: Radosław Zarzyński <rzarzyns@redhat.com>
(cherry picked from commit
1b7a7a8df88ffac007dbafdecc131807de66c046)
{
if (first == last) {
return;
+ } else if (std::accumulate(weight_first, weight_last, 0) == 0) {
+ return;
} else {
std::discrete_distribution d{weight_first, weight_last};
if (auto n = d(g); n > 0) {