C, 306 328 585 611 615 623 673 707 bytes
Source code:
p[256][256]={0};char*X="p[256][256]={0};char*X=%c%s%c,Y[999],c,j,*a;main(){sprintf(Y,X,34,X,34);for(a=Y;*a;a++)p[*a][*(a+1)]++;for(j=*Y;putchar(c=j);)while(p[c][++j]<<16<rand());}",Y[999],c,j,*a;main(){sprintf(Y,X,34,X,34);for(a=Y;*a;a++)p[*a][*(a+1)]++;for(j=*Y;putchar(c=j);)while(p[c][++j]<<16<rand());}
With newlines and whitespace added for legibility/explanation:
01 p[256][256]={0};
02 char*X="p[256][256]={0};char*X=%c%s%c,Y[999],c,j,*a;main(){sprintf(Y,X,34,X,34);for(a=Y;*a;a++)p[*a][*(a+1)]++;for(j=*Y;putchar(c=j);)while(p[c][++j]<<16<rand());}",
03 Y[999],c,j,*a;
04 main(){
05 sprintf(Y,X,34,X,34);
06 for(a=Y;*a;a++)p[*a][*(a+1)]++;
07 for(j=*Y;putchar(c=j);)
08 while(p[c][++j]<<16<rand());
09 }
Explanation
Line 01
: p[][]
holds the counts of one character following another.
Line 02
: X
contains the program's source, escaped with %c%s%c
.
Line 03
: Y
will contain the program's literal source. c
, j
, *a
are counting variables.
Line 05
: Set Y
to contain the quine.
Line 06
: Count letter occurrences in p[][]
.
Line 07
: Print the current state.
Line 08
: Find the next character randomly, proportional to the counts in p[][]
.
Sample output:
p[++);p[99]=Y;putfor(aind(a++j,*a+j=j,c][c,*an(arile(pr*Y,Y[256]<<1);)][*Y,Y;)wha+++j=*aintfor*Y;prin(a+j]=j][256<1)pr(a;a;f(p[char(Y;for());};a;ma;ma=%s%chain(Y;ar(j][256<<<1)p[256<<raile(cha][9]<rin(j,34,34,Y[256]+j,Y,34,Y,c=Y,*a;*a;for(){0}