<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/58832>58832</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            Small issue in constructor of `std::discrete_distribution`
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          zhqrbitee
      </td>
    </tr>
</table>

<pre>
    Hi
I happens to find a potential small issue when I read through `libcxx/include/__random/discrete_distribution.h`:
```c++
template<class _IntType>
template<class _UnaryOperation>
discrete_distribution<_IntType>::param_type::param_type(size_t __nw,
                                                        double __xmin,
                                                        double __xmax,
                                                        _UnaryOperation __fw)
{
    if (__nw > 1)
    {
        __p_.reserve(__nw - 1);
        double __d = (__xmax - __xmin) / __nw;
        double __d2 = __d / 2;
        for (size_t __k = 0; __k < __nw; ++__k)
            __p_.push_back(__fw(__xmin + __k * __d + __d2));
        __init();
    }
}
```

Here we first call `__p_.reserve(__nw - 1)` to reserve size of `__nw - 1` for `__p_`,  but later we loop for `__nw` times to push values into `__p_`.    
It doesn't effect the functionality, but shouldn't we just reserve `__nw` instead of `__nw - 1`? 

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJytVE1zmzAQ_TVw0cQjhI3xgYM_6klOPbQ9MwIWo0SWqCQSu7--K2HHjpP00DbDxPp4-3bfrnYr3RyLexHRTUSXD6TjfQ_KEqdJK1RDOOm1A-UEl8TuuZREWDsAeelAkQdigDfEdUYPu45EGZWiqg-HiG2FquXQAK7K0nDV6D0uG2FrAw5KXDgjqsEJrSYd2kXpcozAr8NXR2zlv3DqYN9L7iBK17Xk1pLyQbnvxx4PvnyG-KG4OX7twXDv5RX4YQxodc2IwaTLnhu-L104utmz3IpfUDpSluolYuuRmfzlX6OHSgJyHfZC_U82fvhntpssIm2LghenWs1XF3bREsyLTwjBFJLkFeUv3yADb9mXEwMWzDOcze5Go_QG-iqoQeLN6MRrQ_w5ZQs83Y7F-NyaBfNAg2D2DtlqQ64r-xTw-DJXp8367IGMTxNP34h8o60fbFdWvH4K8fqk5WO03ngkZMtTNKsQnuf6QH5ZCiUcmt9eRvPNuQybm945bcP_ezDYrYDdbKwjte9gRPwh_xn1zX-6Iz4dRLejzQmEiJCskcb7Y2tCsJOI70DjvUmt-wsIs-ZZxR7CYPG5Ic9cDrgVCg8uTJOgbJxFDosHFss7dwTaFmqHkwaFDKr2b5FL4Y7es3dsOz3IZsSi-8cBtZ4lXIUglHV-Yr0TFKXbk9sYiiTL5tl8nlEaN0XaLNIFj51wEopvVxMQS1lr5DND7VDoSGldM06Lj8dMRuPByKJzrrcex7b47YTrhmpShxEp5fP55643-hFV-2nqPVpczPI8ZXFX0JTTJm0gg0Wa5RlPksWsyqdJwhnQRQax5BVIW0QzfKlMwcsYNK6j2SYWBaOMJQmdJYtpNqWTJM-rrKU5n9KWsZRGUwp7LuTExzHRZhebIoRUDTuLlxJF2cslzluxUwDBHfLzwXXaFL-6n6YSDiAOzosQ_G9MZNlM">