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

Shaofeng SHI commented on KYLIN-3306:
-------------------------------------

+1 LGTM

> Fix the rarely happened unit test exception of generic algorithm
> ----------------------------------------------------------------
>
>                 Key: KYLIN-3306
>                 URL: https://issues.apache.org/jira/browse/KYLIN-3306
>             Project: Kylin
>          Issue Type: Bug
>            Reporter: Zhong Yanghong
>            Assignee: Zhong Yanghong
>            Priority: Major
>             Fix For: v2.3.1
>
>         Attachments: APACHE-KYLIN-3306.patch
>
>
> There's a bug in the following code:
> {code}
> private Chromosome rouletteWheel(final List<Chromosome> chromosomes, final 
> double totalFitness) {
>         float rnd = (float) 
> (GeneticAlgorithm.getRandomGenerator().nextDouble() * totalFitness);
>         float runningScore = 0;
>         for (Chromosome o : chromosomes) {
>             if (rnd >= runningScore && rnd <= runningScore + o.getFitness()) {
>                 return o;
>             }
>             runningScore += o.getFitness();
>         }
>         return null;
>     }
> {code}
> We should use double instead of float.
> For example, (float) (0.9999999988948809 * 40.510999999999996) = 40.511 > 
> 40.510999999999996



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

Reply via email to