commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Gilles (JIRA)" <j...@apache.org>
Subject [jira] [Created] (MATH-1019) "shuffle" method broken (in class "o.a.c.m.RandomDataGenerator")
Date Thu, 08 Aug 2013 22:44:48 GMT
Gilles created MATH-1019:
----------------------------

             Summary: "shuffle" method broken (in class "o.a.c.m.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