You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Phil Steitz (JIRA)" <ji...@apache.org> on 2008/11/27 18:26:44 UTC
[jira] Updated: (LANG-472) RandomUtils.nextLong() get all even
number
[ https://issues.apache.org/jira/browse/LANG-472?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Phil Steitz updated LANG-472:
-----------------------------
Attachment: lang-472.patch
Looks like this is due to loss of significance in the multiply (per the comment ;)
Attached patch replaces the impl with the JDK-supplied method, maintaining the (undocumented) non-negative behavior. Added test confirms that returned values are evenly distributed mod 2.
This problem also affects nextLong(n) where n is sufficiently large. We should either replace the implementation with something else that works for large values of n or determine and document the upper bound.
> RandomUtils.nextLong() get all even number
> ------------------------------------------
>
> Key: LANG-472
> URL: https://issues.apache.org/jira/browse/LANG-472
> Project: Commons Lang
> Issue Type: Bug
> Environment: all system
> Reporter: zhangruimin
> Attachments: lang-472.patch
>
>
> when we use the following code , we can see that the method produce only even number.
> while (true) {
> // for (int i = 0; i < 100; i++) {
> if (RandomUtils.nextLong() % 2 == 1) {
> System.out.println("ok");
> }
> }
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.