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