[
https://issues.apache.org/jira/browse/MATH-1019?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13736868#comment-13736868
]
Phil Steitz commented on MATH-1019:
-----------------------------------
Sorry, but the "dead trees version" I meant the published book. The link above
is to a pdf of the book. I think it is better to stick with this, which is the
original reference that describes what we have implemented exactly. The
wikipedia article covers several different algorithms, one of which is similar
to what we have.
> "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
> 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