## Mathematica, 253 bytes

    f=(For[i=0;j=1,j<=#,j+=Mod[RealDigits[9801/Sqrt@8/Sum[(4j)!(1103+26390j)/(j!)^4/396^(4j),{j,0,125}],10,999][[1,j]]-1,10]+1;++i];"99iiiitS===oooo8862^^^^^^\uusRRRRRRqqqqqqqqMMMMmlllllllgggggggFFFeeeeeeeeDDDDDDaaaaa55555555<<{{\{{{{{{}}}}}}}}--@@@@@@";i)&

Ungolfed:

    f = (
       For[i = 0; j = 1, j <= #, 
        j += Mod[
           RealDigits[
              9801/Sqrt@8/
               Sum[(4 j)! (1103 + 26390 j)/(j!)^4/396^(4 j), {j, 0, 125}],
               10, 999][[1, j]] - 1, 10] + 1; ++i];
       "99iiiitS===oooo8862^^^^^^uusRRRRRRqqqqqqqqMMMMmlllllllgggggggFFFeeeeeeeeDDDDDDaaaaa55555555<<{{{{{{{{}}}}}}}}--@@@@@@";
       i
       ) &

A whopping 119 bytes are used to pad the string to get the right character frequency. I'll try to improve that tomorrow.

If I didn't make any mistakes, the character frequencies should match the digits of pi in this order:

    3#/&(,![)4+9j0it"S=;]ro862^usRqM1mlgFfeDda5<{}-@