how to implement non uniform probability distribution?

前端 未结 3 1278
你的背包
你的背包 2020-12-10 09:18

I am trying to implement non-uniform probability distribution in genetic algorithm.

In the implementation of genetic program, I have an experiment which has 3 outcom

相关标签:
3条回答
  • 2020-12-10 09:55

    For a simple discrete distribution, you can write a sampler that will return your outcomes with the desired frequency by using the cumulative probabilities.

    Random r = new Random();
    double v = r.nextDouble();
    
    if (v <= 0.85) { return 0; }
    if (v <= 0.86) { return 1; }
    return 2;
    

    This will return the numbers 0, 1 and 2 with a probability of 0.85, 0.01 and 0.14.

    As far as the theory on non-uniform probability distributions, you can start with this Wikipedia article on probability distributions; take special note of the collapsible sections at the bottom of the page. You will find that there are dozens of non-uniform distribution (both continuous and discrete) with different properties.

    0 讨论(0)
  • 2020-12-10 10:04

    Based on your description it seems to me that you are talking about fitness proportionate selection (also known as roulette wheel selection).
    http://en.wikipedia.org/wiki/Roulette-wheel_selection

    I think nailxx' answer is a pretty compact description what you need to do.

    see also Roulette Selection in Genetic Algorithms
    Roulette wheel selection algorithm

    If I'm wrong here are some libraries that you may find useful:
    http://www.ee.ucl.ac.uk/~mflanaga/java/Stat.html
    http://commons.apache.org/math/apidocs/org/apache/commons/math/random/package-summary.html

    0 讨论(0)
  • 2020-12-10 10:18

    In your particular case it is better to get a random value in [0; 100) using uniform distribution and then check what range it falls in: [0; 85), [85;99), [99, 100)

    0 讨论(0)
提交回复
热议问题