Date: Wed, 3 Mar 2021 19:39:15 +0000 (UTC)
alright. i'll stick with subtraction.
On Wednesday, March 3, 2021, 10:59:38 AM EST, Gašper Ažman via Std-Proposals <std-proposals_at_[hidden]> wrote:
Also to have an equivalent floating-point interface that can actually generate both 1.0 and 0.0
On Wed, Mar 3, 2021 at 3:02 PM Edward Catmur <ecatmur_at_[hidden]> wrote:
It seems to me that what you really want is a uniform_int_distribution that accepts a half-open interval. I assume the reason the Standard specifies a closed interval is to allow a distribution over the whole of an integer type?
On Wed, Mar 3, 2021 at 9:59 AM Gašper Ažman via Std-Proposals <std-proposals_at_[hidden]> wrote:
Not sure if I understand, because it seems so obvious otherwise: you just want a function that returns size()-1?
On Wed, Mar 3, 2021 at 7:56 AM Kurt Raburn via Std-Proposals <std-proposals_at_[hidden]> wrote:
hello,
i'm not sure if this was my fault, but this is the issue i was having.
std::uniform_int_distribution<int> dist(0, vec.size()); // runtime error
std::uniform_int_distribution<int> dist(0, vec.size() - 1); // ok
after some thought, i wrote a function that returns the index count.
template<typename T>
int indices(const std::vector<T>& vec)
{
int cnt = 0;
for (T i : vec) {
++cnt;
}
return --cnt;
}
then, i modified the size() function, and it returned the same result.
_NODISCARD size_type indices() const noexcept
{
return (static_cast<size_type>(this->_Mylast() - this->_Myfirst() - 1));
}
usage:
std::uniform_int_distribution<int> dist(0, vec.indices());
forgive me if i overlooked a library function that would've solved this.
On Wednesday, March 3, 2021, 10:59:38 AM EST, Gašper Ažman via Std-Proposals <std-proposals_at_[hidden]> wrote:
Also to have an equivalent floating-point interface that can actually generate both 1.0 and 0.0
On Wed, Mar 3, 2021 at 3:02 PM Edward Catmur <ecatmur_at_[hidden]> wrote:
It seems to me that what you really want is a uniform_int_distribution that accepts a half-open interval. I assume the reason the Standard specifies a closed interval is to allow a distribution over the whole of an integer type?
On Wed, Mar 3, 2021 at 9:59 AM Gašper Ažman via Std-Proposals <std-proposals_at_[hidden]> wrote:
Not sure if I understand, because it seems so obvious otherwise: you just want a function that returns size()-1?
On Wed, Mar 3, 2021 at 7:56 AM Kurt Raburn via Std-Proposals <std-proposals_at_[hidden]> wrote:
hello,
i'm not sure if this was my fault, but this is the issue i was having.
std::uniform_int_distribution<int> dist(0, vec.size()); // runtime error
std::uniform_int_distribution<int> dist(0, vec.size() - 1); // ok
after some thought, i wrote a function that returns the index count.
template<typename T>
int indices(const std::vector<T>& vec)
{
int cnt = 0;
for (T i : vec) {
++cnt;
}
return --cnt;
}
then, i modified the size() function, and it returned the same result.
_NODISCARD size_type indices() const noexcept
{
return (static_cast<size_type>(this->_Mylast() - this->_Myfirst() - 1));
}
usage:
std::uniform_int_distribution<int> dist(0, vec.indices());
forgive me if i overlooked a library function that would've solved this.
-- Std-Proposals mailing list Std-Proposals_at_[hidden] https://lists.isocpp.org/mailman/listinfo.cgi/std-proposals -- Std-Proposals mailing list Std-Proposals_at_[hidden] https://lists.isocpp.org/mailman/listinfo.cgi/std-proposals -- Std-Proposals mailing list Std-Proposals_at_[hidden] https://lists.isocpp.org/mailman/listinfo.cgi/std-proposals
Received on 2021-03-03 13:39:22