FYI: генерируется таблица [256] вероятностей, основанная на битах его (ascii) ввода.
Использование: cat*.c| ./a.out
; -)
#include <stdio.h>
struct cell {
unsigned nhit;
unsigned ones;
} cells[256] ={{0,0},};
int main(void)
{
unsigned state, newstate, bit,val;
int ch;
for(state=0; 1; ){
ch=getc(stdin);
if(ch==EOF)break;
for(bit=8; bit-- ;state=newstate & 0xff ){
val= ch & bit? 1: 0;
if(val) cells[state].ones += 1;
cells[state].nhit += 1;
newstate= (state <<1) | val;
}
}
for(state=0; state< 256; state++ ){
if ( cells[state].nhit < 1)continue;
fprintf(stdout, "%2x: %u / %u (%lf)\n"
, state
, cells[state].ones , cells[state].nhit
, (0.0+cells[state].ones) / cells[state].nhit
);
}
return 0;
}
Забавно видеть, что большинство значений 0 или 1;или близко к нему;или около 0,5.