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

ASF GitHub Bot commented on RNG-61:
-----------------------------------

Github user coveralls commented on the issue:

    https://github.com/apache/commons-rng/pull/13
  
    
    [![Coverage 
Status](https://coveralls.io/builds/20175287/badge)](https://coveralls.io/builds/20175287)
    
    Coverage increased (+0.009%) to 97.552% when pulling 
**d3ac7f75e2ed7e21fc48c5db8c5ea8bfbe3533f3 on aherbert:improvement-RNG-61** 
into **0fdcd9007c708aa48f1989cb2211ea56c1fcd702 on apache:master**.



> PermutationSampler shuffle contains unnecessary conditional
> -----------------------------------------------------------
>
>                 Key: RNG-61
>                 URL: https://issues.apache.org/jira/browse/RNG-61
>             Project: Commons RNG
>          Issue Type: Improvement
>          Components: sampling
>            Reporter: Alex D Herbert
>            Priority: Trivial
>             Fix For: 1.2
>
>
> The Fisher-Yates algorithm in the PermutationSampler has a conditional {{if}} 
> statement within the loop that checks if the step is the first in the loop. 
> It then swaps a position with itself. For example for the towards head 
> variant:
> {code:java}
> for (int i = 0; i <= start; i++) {
>     final int target;
>     // Check for start
>     if (i == start) {
>         target = start; // this means target == i
>     } else {
>         target = rng.nextInt(start - i + 1) + i;
>     }
>     // if target == i then this step is not needed.
>     final int temp = list[target];
>     list[target] = list[i];
>     list[i] = temp;
> }
> {code}
> This can be removed by altering the iteration loop:
> {code:java}
> for (int i = start; i > 0; i--) {
>     final int target = rng.nextInt(i + 1);
>     final int temp = list[target];
>     list[target] = list[i];
>     list[i] = temp;
> }
> {code}
> An equivalent fix is available for the shuffle towards the tail.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to