猴子打字机模拟器

· · 算法·理论

0. 前言

相信大家对无限猴子定理都不陌生,所以为了验证其复杂度,我发明了此模拟器。

1. 原理

每一刻随机生成一个小写字母,判断什么时候与给定字符串相等。

Q. 为什么只有小写字母?

A. 为了减轻猴子的工作量。

2. 代码

#include <bits/stdc++.h>
using namespace std;
char c[11451419],ok[114]="hello";//改成你要的字符串,推荐<=5个字符
int len,flag;
int main(){
    freopen("rand.out","w",stdout);
    srand(time(0));
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    int lt=strlen(ok);
    while(1){
        char ls=rand()%26+'a';
        c[++len]=ls;
        if(len>=lt){
            flag=0;
            for(int i=len-lt+1;i<=len;i++){
                if(c[i]!=ok[i-len+lt-1]){
                    flag=1;
                    break;
                }
            }
            if(flag==0){
                for(int i=1;i<=len;i++){
                    cout<<c[i];
                }
                cout<<'\n'<<len;
                return 0;
            }
        }
    }
    return 0;
}