Unicode mystery of Pi

Just in case anyone is planning on writing a sequel to the Da Vinci Code set in China, here’s an interesting Mystery Machine, which essentially just prints--in real time--a random sample of Chinese characters from the principle CJK unicode block:
In[]:=
AbsoluteTiming[​​Module[{​​characterRange={19968,40959},​​state=PiInit[10],​​digits=Association[-5->0,-4->0,-3->0,-2->0,-1->0],​​ind=0,hitend=0,int,hits=Association[]},​​CheckAbort[Monitor[While[​​True,​​state=IteratePiDigit[10][state];​​digits[++ind]=state["Output"];​​int=FromDigits[Values[digits][[-5;;-1]],10];​​If[characterRange[[1]]<=int<=characterRange[[2]],​​hits[++hitend]=FromCharacterCode[int]​​]],​​Values[hits]],​​res=Values[hits]];​​Iconize[res]->res​​]​​]
Out[]=
7.8697,
窷,枧,谹,纀,崦,阾,杁,萨,閷,耛,洮,炩,鰁,銆,凮,娦,砽,麴,濌,冣,涂,蠉,拾,薣,劲,叨,耷,湆,娚,矈,阮,圭,媄,篭,挏,豤,齬,潁,滺,榋,陹,剱,妤,猱,皭,锴,炊,芦,蚝,漻,孒,菺,鏫,箤,槰,仞,室,蜫,蠭,羘,栘,卛,蒐,駀,賨,斨,慒,櫬,酽,怋,筆,冸,凢,溄,牆,捁,鿕,蹔,辵,支,財,脝,睂,睔,俲,厈,阎,脡,睬,榜,軟,磉,啥,锱,罣,昅,祋,峷,鑬,歧,襴,橰,愻,変,洢,锧,疧,璉,莉,载,荘,趔,彖,黐,碌,厒,驆,驢,埉,悡,酆,唦,那,氹,餱,哕,犅,簗,崦,陃,鹁,紀,严,樉,更,謘,沉,藣,殹,踓,鄺,叜,鿅,域,慹,藽,痂,郱,夌,浀,攤,寶,詜,仧,匪,煝,嗈,鶘,虲,跉,瑎,礔,劎,袷,醱,瑔,篴,耰,渀,米,律,螂,瘸,朹,抇,圤,娪,硩,拶,芦,蚤,覽,晑,秔,窒,鏎,靠,烁,膸,絓,兦,链,傉,皗,貎,挅,衘,灓,禷,濞,鞧,寱,訲,鏳,銏,綫,哐,墘,梶,畃,泤,咊,仦,铏,摸,亊,耔,泮,费,萚,锦,浀,姶,癝,痳,侁,觥,痩,珹,趁,塇,斊,頀,憌,唏,溻,蟧,笛,庵,忝,獝,腜,秀,泏,锟,鉘,馗,粵,探,鲜,氵,顡,巌,鳀,澧,赀,謵,郔,獳,鉉,揁,鑙,棟,鸛,蝖,兄,攲,犓,腰,窇,辢,焽,刷,呴,偙,巺,麄,锆,褨,拺,萠,镣,廬,畓,謃,鴷,悭,罿,朗,飥,橼,斺,楰,夌,洿,寻,誖,販,蕼,咉,嗨,怊,笏,癎,濊,琱,险,楳,橊,剗,癗,獱,絴,劭,蛂,伳,殧,屠,躀,蟭,譏,遴,枮,抾,泖,掮,热,洢,鑰,慗,哤,綬,哙,句,寍,裆,譥,贓,覷,掱,卖,苃,蟅,陻,嬛,臗,纆,嵣,颡,駶,艁,芮,蛳,幨,扥,譮,刀,喢,囊,嚨,啒,橷,掞,捑,摘,蝬,橠,嫯,耗,洍,问,閇,洿,鞵,鏧,賿,埰,戥,扵,借,馂,璘,潈,楁,庄,潖,囂,噚,削,矒,泖,嘗,侧,餚,岡,鄑,鏭,蹕,酇,灊,髈,幊,韼,羅,杛,葰,颇,毆,齕,楂,鮛,覻,敥,擞,塜,晝,倪,埙,愾,齄,桟,棠,斞,朡,鳈,踪,験,鉏,眪,佽,袒,抝,必,鰝,竅,瑱,戅,酥,嚙,哀,靕,琺,痑,饴,漴,镼,棴,霡,汝,抝,怓,骪,祉,択,恨,櫤,蹞,闟,辀,赾,囶,塢,暔,旳,怠,彄,鞻,颅,彝,軅,沟,貝,现,麻,討,薬,嘸,僲,囲,堶,擤,潈,潚,欂,騜,墒,桺,扽,厉,険,堕,掛,沯,嶲,鮸,誠,娑,睱,謉,跹,蜈,纛,帰,戾,鴼,抌,奧,烏,章,逃,奚,灌,鹰,脾,碍,瀈,冊,慪,隽,昘,車,穁,瑘,咲,甥,墂,柜,鳎,榧,繻,峴,鑌,峂,鉖,完,蘼,蹦,澨,柚,刻,誑,讛,驣,婉,禞,藟,樞,卯,貁,趇,婨,竒,獔,愑,酃,鶧,谾,浙,虣,鶶,鈬,乩,祑,颖,嗟,靘,膾,綐,叅,霟,裸,瘊,啕,粦,郅,沫,鰐,傆,藯,灒,黃,鉋,岦,鄽,唧,颽,椠,嶦,魄,鿋,媜,糙,光,埻,抏,婸,筳,鞣,疾,凉,鋵,厂,鏟,頙,鎛,皶,额,儥,蝰,嚦,啁,搙,斌,叿,矘,阯,蛵,伤,旆,扱,亵,潛,缆,扢,卌,纲,弔,蔨,龱,膕,篶,蝙,频,棨
By changing a few parameters, we can get essentially the same algorithm to print random English-language letters as well:
In[]:=
AbsoluteTiming[​​Module[{​​characterRange=Catenate[ToCharacterCode/@Alphabet[]],​​state=PiInit[10],​​digits=Association[-5->0,-4->0,-3->0,-2->0,-1->0],​​ind=0,hitend=0,int,hits=Association[]},​​CheckAbort[Monitor[While[​​True,​​state=IteratePiDigit[10][state];​​digits[++ind]=state["Output"];​​int=FromDigits[Values[digits][[-3;;-1]],10];​​If[MemberQ[characterRange,int],​​hits[++hitend]=FromCharacterCode[int]​​]],​​Values[hits]],​​res=Values[hits]];​​Iconize[res]->res​​]​​]
Out[]=
28.4116,
{i,a,u,o,u,f,n,i,m,a,x,h,q,t,u,u,i,v,z,w,z,i,p,y,c,q,i,v,e,d,s,z,o,w,j,t,b,q,b,h,e,h,h,p,y,k,t,w,a,s,c,d,u,j,v,c,b,b,i,h,c,t,p,m,l,e,a,i,r,q,f,n,e,i,h,d,w,e,h,d,j,f,n,m,a,x,x,t,m,b,y,l,d,g,n,g,o,q,t,c,b,c,a,x,w,p,x,n,e,n,d,k,n,e,h,i,o,t,n,i,m,b,d,u,h,q,p,r,a,c,p,k,o,u,m,y,r,x,h,v,w,r,b,c,b,z,g,x,i,r,w,b,m,b,q,y,q,t,b,h,w,o,q,m,w,k,t,u,y,z,r,f,w,p,t,f,a,w,g,a,d,f,o,u,k,s,o,w,y,h,p,q,j,m,g,s,n,l,x,l,u,z,k,v,t,e,d,h,x,h,f,e,c,r,q,c,g,f,c,w,n,e,d,h,o,u,k,u,e,x,z,g,r,r,w}