Jimmy Blog

Welcome!

轮盘赌算法

轮盘赌算法是主要用在“遗传算法”中遗传对象的选择上。

描述

设有N个个体,每个个体的概率为: \(Pi\) 则,\(P1 + P2 + ... + PN = 1\)

获取一个随机数:\(r\in [0, 1]\),i从1的概率开始累加至N,当累加和m大于r,则停止,返回i。

意思就是一个长度为1的线段被N个对象的P占据,随机产生一个r,看看落到对应的哪个i的P里面。

代码

int RWS()
{
    m = 0;
    r =Random(0,1); //r为0至1的随机数
    for(i=1;i<=N; i++)
    {
        m = m + P[i];
        if(r<=m) return i;
    }
}

comments powered by Disqus