[llvm-bugs] [Bug 39209] New: std::uniform_int_distribution erroneously rejects generator values

via llvm-bugs llvm-bugs at lists.llvm.org
Sun Oct 7 07:51:58 PDT 2018


            Bug ID: 39209
           Summary: std::uniform_int_distribution erroneously rejects
                    generator values
           Product: libc++
           Version: 6.0
          Hardware: All
                OS: All
            Status: NEW
          Severity: normal
          Priority: P
         Component: All Bugs
          Assignee: unassignedclangbugs at nondot.org
          Reporter: llvm at christoph-conrads.name
                CC: llvm-bugs at lists.llvm.org, mclow.lists at gmail.com

Created attachment 20974
  --> https://bugs.llvm.org/attachment.cgi?id=20974&action=edit
Demonstration of bug

Given a generator returning values in the interval [0, r] and
`std::uniform_int_distribution(0, b)`, let r,b such that r+1 multiple of b+1.
In this case `std::uniform_int_distribution` may erroneously reject generator
values although no rejection sampling is needed.

In the demonstration program in the attachment, r=19, b=9 so that half of all
generator values are rejected. The bug does not occur if r+1 and b+1 are powers
of two.

Note that the GNU C++ Library contains a similar bug:

$ clang++ --version
clang version 6.0.1 (tags/RELEASE_601/final)
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/lib/llvm/6/bin

You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20181007/57902c27/attachment.html>

More information about the llvm-bugs mailing list