算法与并发编程实用指南
1. The Weasel程序
The Weasel程序是一个思想实验,由Richard Dawkins提出,旨在展示累积的小改进(即能为个体带来益处并被自然选择选中的突变)如何快速产生结果,这与主流认为进化是大幅度跳跃的误解相反。
算法步骤 :
1. 从一个随机的28个字符的字符串开始。
2. 制作该字符串的100个副本,每个字符有5%的概率被随机字符替换。
3. 将每个新字符串与目标字符串 “METHINKS IT IS LIKE A WEASEL” 进行比较,并为每个字符串打分(即字符串中位置和字符都正确的字母数量)。
4. 如果任何新字符串的得分是满分(28分),则停止。
5. 否则,选取得分最高的字符串,返回步骤2。
代码实现 :
class weasel
{
std::string target;
std::uniform_int_distribution<> chardist;
std::uniform_real_distribution<> ratedist;
std::mt19937 mt;
std::string const allowed_chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ ";
public:
weasel(std::string_view t) :
target(t), chardist(0, 26), ratedist(0,
超级会员免费看
订阅专栏 解锁全文
11万+

被折叠的 条评论
为什么被折叠?



