commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Phil Steitz (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (MATH-1019) "shuffle" method broken (in class "o.a.c.m.random.RandomDataGenerator")
Date Fri, 09 Aug 2013 21:52:49 GMT

    [ https://issues.apache.org/jira/browse/MATH-1019?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13735364#comment-13735364
] 

Phil Steitz commented on MATH-1019:
-----------------------------------

I like to keep what is in JIRA understandable to users, but I get your point and am OK with
keeping these as separate issues as long as you make it clear in changes.xml.  Also, what
would you think about changing the affects version to 3.3?  Unfortunately, "nightly builds"
does not seem to be an option.
                
> "shuffle" method broken (in class "o.a.c.m.random.RandomDataGenerator")
> -----------------------------------------------------------------------
>
>                 Key: MATH-1019
>                 URL: https://issues.apache.org/jira/browse/MATH-1019
>             Project: Commons Math
>          Issue Type: Bug
>    Affects Versions: 3.2
>            Reporter: Gilles
>             Fix For: 3.3
>
>
> The method does not abide by its contract: elements before the "end" index are included
in the shuffle.
> {code}
> /**
>  * Uses a 2-cycle permutation shuffle to randomly re-order the last elements 
>  * of list.
>  *
>  * @param list list to be shuffled
>  * @param end element past which shuffling begins
>  */
> private void shuffle(int[] list, int end) {
>     int target = 0;
>     for (int i = list.length - 1; i >= end; i--) {
>         if (i == 0) { // XXX "0" should be "end"
>             target = 0; // XXX "0" should be "end"
>         } else {
>             // NumberIsTooLargeException cannot occur
>             target = nextInt(0, i); // XXX "0" should be "end"
>         }
>         int temp = list[target];
>         list[target] = list[i];
>         list[i] = temp;
>     }
> }
> {code}
> I'm going to introduce the above corrections in the new implementation to be located
in "MathArrays" (cf. issue MATH-1010).

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Mime
View raw message