26英文字母使用频率的大样本分析

样本:英文世界名著(1000部)

样本容量:1.4亿(包含6918个文件,366M)

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int CountL[26];

int CheckL(char c)
{
    int index;
    char i, j;
    int flag = 0;

    for(i = 'A', j = 'a'; i <= 'Z', j <= 'z'; i++, j++)
    {
        if(i == c)
        {
            CountL[i - 65]++;
            flag = 1;
            break;
        }
        if(j == c)
        {
            CountL[j - 97]++;
            flag = 1;
            break;
        }
    }

    return flag;
}

long LetterScan(char *filepath)
{
    FILE *fp;
    long AllCount = 0;
    char c;

    if((fp = fopen(filepath, "r")) == NULL)
    {
        perror("Can't open!");
        exit(1);
    }

    while(!feof(fp))
    {
        c = fgetc(fp);
        if(CheckL(c))
        {
            AllCount++;
        }
    }

    fclose(fp);
    return AllCount;
}

char *SortL()
{
    int i, j, t;
    char c;
    char *Letter;

    Letter = (char *)calloc(26, sizeof(char));

    for(i = 0; i < 26; i++)
    {
        Letter[i] = i + 97;
    }

    for(i = 0; i < 25; i++)
    {
        for(j = 0; j < 25 - i; j++)
        {
            if(CountL[j] < CountL[j + 1])
            {
                t = CountL[j];
                c = Letter[j];
                CountL[j] = CountL[j + 1];
                Letter[j] = Letter[j + 1];
                CountL[j + 1] = t;
                Letter[j + 1] = c;
            }
        }
    }

    return Letter;
}

int main()
{
    char *FilePath = "/share/test/doc/test.txt";
    int i;
    long count = 0;
    char *Letter;

    Letter = (char *)calloc(26, sizeof(char));
    system("rm -rf doc/test.txt");
    system("cat doc/*txt > doc/test.txt");

    count = LetterScan(FilePath);
    Letter = SortL();

    printf("测试文本包含有效英文字母总数:%ld\n", count);
    for(i = 0; i < 26; i++)
    {
        printf("%c共出现%d次,概率是%f\n", Letter[i], CountL[i], (float)CountL[i] / count);
    }
    free(Letter);
    return 0;
}

26英文字母使用频率的大样本分析,布布扣,bubuko.com

时间: 2024-10-22 05:02:43

26英文字母使用频率的大样本分析的相关文章

26个英文字母的原始含义及产生

我们都知道汉字是象形文字,但如果说英语也是象形文字,你一定会以为纯是无稽之谈.其实,追根溯源,英语的26个字母确实来自于象形文字.这26个字母最初起源于埃及象形文字,后由腓尼基人改进发明了腓尼基字母,希腊人对腓尼基字母加以改革后创造了希腊字母,古罗马人对希腊字母加以改革进而发明了拉丁字母,英文字母就属于拉丁字母.几千年的变迁,古代字母和现代字母的发音已经有很大的区别,但其基本的象形含义仍或多或少地保存下来.而且每个字母的原始意义又渗透到各种词根之中,最终在现代词汇中留下了明显的痕迹. 理解26个

[No000030]26个英文字母的原始含义及产生

我们都知道汉字是象形文字,但如果说英语也是象形文字,你一定会以为纯是无稽之谈.其实,追根溯源,英语的26个字母确实来自于象形文字.这26个字母最初起源于埃及象形文字,后由腓尼基人改进发明了腓尼基字母,希腊人对腓尼基字母加以改革后创造了希腊字母,古罗马人对希腊字母加以改革进而发明了拉丁字母,英文字母就属于拉丁字母.几千年的变迁,古代字母和现代字母的发音已经有很大的区别,但其基本的象形含义仍或多或少地保存下来.而且每个字母的原始意义又渗透到各种词根之中,最终在现代词汇中留下了明显的痕迹. 理解26个

[No00005B]理解26个英文字母的原始含义-例词

理解26个英文字母的原始含义,不仅可以加强我们的语感,而且对我们背单词是大有帮助的.那么26个字母的象形之处到底在哪呢?下面是各字母所对应的含义,如果用示图表达出来,将会更加清楚. A-牛头 B-房子.鸟嘴 C,G-房角 D-门 E-举着双手的人 F-沙粒 H-荷花 I-手 K-皇帝 L-鞭子 M-水or波浪 N-鼻子 O-圆的东西 P-嘴 Q,R-人头 S-太阳,沙丘 T-十字架 V-龙 X-十字架 Z-闪电 A aa, an 一(个,件)(an 用于元音音素开头的词前) (3A1)a car

由数字、26个英文字母、下划线或汉字的正则表达式

1.由数字.26个英文字母或者下划线组成的字符串: ^[0-9a-zA-Z_]{1,}$ 2.非负整数(正整数 + 0 ): ^/d+$ 3. 正整数: ^[0-9]*[1-9][0-9]*$ 4.非正整数(负整数 + 0): ^((-/d+)|(0+))$ 5. 负整数 : ^-[0-9]*[1-9][0-9]*$ 6.整数: ^-?/d+$ 7.非负浮点数(正浮点数 + 0): ^/d+(/./d+)?$ 8.正浮点数 : ^(([0-9]+/.[0-9]*[1-9][0-9]*)|([0-

电脑26个英文字母按键紊乱解决方案

今天晚上,我自己遇到了一个棘手的问题--电脑键盘的26个英文字母按键出现紊乱的事情. 症状: 打开任意一文本文档,在电脑面板键盘上或者在电脑连接的外置键盘上点击26个英文字母中的相关按键时,有的英文字母可以正确显示在文本文档中,有的按键按下后,会出现一些其他的"功能".例如,当我按下"b"键时,鼠标光标跳出文本文档:当我按下"d"键时,文本文档缩小至最小化. 解决方案: 我自己在手机上查阅相关资料,尝试了近2小时,最后通过在文本文档中,按住快捷键

强大的CSS:3种姿势实现26个英文字母的案例

一.借助CSS border实现案例 实现效果如下(为实时渲染效果): 如何使用? 引用CSS文件,例如: <link rel="stylesheet" href="./css-letters1.css"> 或者直接CSS代码到你的项目中: /* 全局样式 */ .letter { color: #2486ff; border-style: solid; border-width: .5em; display: inline-block; positio

CSS:3种姿势实现26个英文字母的案例

一.借助CSS border实现案例 实现效果如下(为实时渲染效果): 如何使用? 引用CSS文件,例如: <link rel="stylesheet" href="./css-letters1.css"> 或者直接CSS代码到你的项目中: /* 全局样式 */ .letter { color: #2486ff; border-style: solid; border-width: .5em; display: inline-block; positio

28、editText只输入英文字母和&#39;-&#39;,用于授权码输入

1 InputFilter filter = new InputFilter() { 2 3 @Override 4 public CharSequence filter(CharSequence source, int start, int end, 5 Spanned dest, int dstart, int dend) { 6 // TODO Auto-generated method stub 7 for (int i = start; i < end; i++) 8 { 9 //在这

【转】正则表达式 匹配中文,英文字母和数字及_的写法!同时控制长度

匹配中文:[\u4e00-\u9fa5] 英文字母:[a-zA-Z] 数字:[0-9] 匹配中文,英文字母和数字及_: ^[\u4e00-\u9fa5_a-zA-Z0-9]+$ 同时判断输入长度:[\u4e00-\u9fa5_a-zA-Z0-9_]{4,10} ^[\w\u4E00-\u9FA5\uF900-\uFA2D]*$ 1.一个正则表达式,只含有汉字.数字.字母.下划线不能以下划线开头和结尾:^(?!_)(?!.*?_$)[a-zA-Z0-9_\u4e00-\u9fa5]+$  其中:^