<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">