{"id":327,"date":"2016-01-12T01:57:01","date_gmt":"2016-01-11T23:57:01","guid":{"rendered":"https:\/\/moijari.com\/?p=327"},"modified":"2019-11-22T17:01:12","modified_gmt":"2019-11-22T15:01:12","slug":"satunnaislukugeneraattorin-uusi-kasittely","status":"publish","type":"post","link":"https:\/\/moijari.com\/?p=327","title":{"rendered":"Satunnaislukugeneraattorin uusi k\u00e4sittely"},"content":{"rendered":"<p>Kirjoitin aiemmin postissa <a href=\"https:\/\/moijari.com\/?p=62\">https:\/\/moijari.com\/?p=62<\/a> genbyte ja genbytes rutiineihin perustuvasta satunnaisbittigeneraattorista, joka tekee satunnaislukuja kellon perusteella. Satunnaislukugeneraattori perustuu vaihteluihin, joita tapahtuu luettaessa kelloa toistuvasti. (rutiinipari on oma keksint\u00f6ni)<\/p>\n<p>HUOM: T\u00e4t\u00e4 ei t\u00e4ll\u00e4 tiedolla kannata k\u00e4ytt\u00e4\u00e4 ainoana satunnaislukugeneraattoreina, vaan kannattaa aina summata useampia generaattoreita xor:aamalla tai tiivistefunktiolla. Tietysti on mukavaa, jos joku summattavista generaattoreista on omassa ohjelmassa&#8230;<\/p>\n<p>HUOM2: Ilmeisesti b:n arvo 20 on liian pieni 64 merkin puskurille, se tuottaa duplikaattipuskureita. Kokeiluissani b:n arvolla 100 ei duplikaattipuskureita ole tullut 64 merkkisell\u00e4 puskurilla (muutamilla miljoonilla ajokerroilla). Tavoite on saada b:n arvo m\u00e4\u00e4ritelty\u00e4 siten, ett\u00e4 satunnaisbittien m\u00e4\u00e4r\u00e4 riitt\u00e4\u00e4 koko puskuriin, ja ett\u00e4 kuitenkin ajoaika on kohtuulinen (tuplien laskuohjelma lopussa). Edit: Onko niin, ett\u00e4 jos satunnaislukugeneraattori alkaa tuottamaan tuplia ~1048576 suorituskerran j\u00e4lkeen, inputista (t\u00e4ss\u00e4 kellodatasta) saadaan ~20 (2^20=1048576) bitti\u00e4 satunnaisuutta. ja jos satunnaisuutta halutaan 40 bitti\u00e4, lis\u00e4t\u00e4\u00e4n kierroksia kaksinkertaiseksi (alkuper\u00e4inen b on esim 30, uusi b on 60). Pondering..<\/p>\n<p>summary: this random bit generator is based on fluctuations on bit stream reading clock repeatedly. post tries to show what these fluctuations are, and how they are used to create random bit stream. post gives code that i created in these couple of days i have been studying generator. generator itself was invented by me in ~november 2013. code for the generator is in next two functions, and the rest of the post tries to show how it works. i am not totally confident that the generator is good enough, but confident enough to write this summary in english. language of the post is finnish, of course.<\/p>\n<p>Rutiinit ovat seuraavassa, ensimm\u00e4isen rutiinin nimi on muutettu ja &#8220;turhat&#8221; bitit on otettu pois (millisekunnit, minuutit, tunnit, p\u00e4iv\u00e4t, kuukaudet&#8230; oli aiemmassa versiossa ymp\u00e4tty yhteen merkkiin). T\u00e4m\u00e4 on helpompi selitt\u00e4\u00e4 ja ymm\u00e4rt\u00e4\u00e4, siin\u00e4 on vain millisekuntien alimmat 8 bitti\u00e4:<\/p>\n<pre>\/*\r\n * (c)2013-2016 Jari Kuivaniemi, Kaikki oikeudet pid\u00e4tet\u00e4\u00e4n!\r\n *\/\r\nunsigned char clockbyte()\r\n{\r\n\u00a0 unsigned char byte;\r\n\u00a0 unsigned long usec,sec;\r\n\r\n\u00a0 struct timeval tv;\r\n\r\n\u00a0 gettimeofday(&amp;tv,NULL);\r\n\r\n\u00a0 usec=tv.tv_usec;\r\n\u00a0 sec=tv.tv_sec;\r\n\r\n\u00a0 byte=(usec&amp;0xff);\r\n\r\n\u00a0 return(byte);\r\n}\r\n\r\ngenbytes(int size, unsigned char *buffer, int b)\r\n{\r\n\u00a0 int c,d,e,f;\r\n\u00a0 unsigned char byte;\r\n\r\n\u00a0 f=0;\r\n\u00a0 for(c=0;c&lt;8*b;c++) {\r\n\u00a0\u00a0\u00a0 for(d=0;d&lt;size;d++) {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 byte=clockbyte();\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 e=buffer[d];\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 e=((e&amp;0x80)&gt;&gt;7) | ((e&amp;0x7f)&lt;&lt;1);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 e=e^byte;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 buffer[d]=e;\r\n\u00a0\u00a0\u00a0 }\r\n\u00a0\u00a0\u00a0 for(d=0;d&lt;size;d++) { \/* see rc4 *\/\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 f=(f+buffer[d])%size;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 e=buffer[d];\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 buffer[d]=buffer[f];\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 buffer[f]=e;\r\n\u00a0\u00a0\u00a0 }\r\n\u00a0 }\r\n}<\/pre>\n<p>Seuraavilla testirutiineilla voidaan mielest\u00e4ni havainnollistaa n\u00e4it\u00e4 vaihteluita:<\/p>\n<pre>test_timer1()\r\n{\r\n\u00a0 int c,size;\r\n\u00a0 unsigned char *buffer;\r\n\r\n\u00a0 size=buffer_size*8*bytes_per_bit;\r\n\r\n\u00a0 if((buffer=malloc(size))==NULL) {\r\n\u00a0\u00a0\u00a0 fprintf(stderr,\"jarik2: cannot allocate testing buffer\");\r\n\u00a0 }\r\n\r\n\u00a0 for(c=0;c&lt;size;c++) {\r\n\u00a0\u00a0\u00a0 buffer[c]=clockbyte();\r\n\u00a0 }\r\n\r\n\u00a0 for(c=0;c&lt;size;c++) {\r\n\u00a0\u00a0\u00a0 if(c&gt;0 &amp;&amp; c%64==0)\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 fprintf(stdout,\"\\n\");\r\n\u00a0\u00a0\u00a0 fprintf(stdout,\" %3d\",buffer[c]);\r\n\u00a0 }\r\n\r\n\u00a0 free(buffer);\r\n}<\/pre>\n<p>Edellisen rutiinin size lauseke sis\u00e4lt\u00e4\u00e4 kaikki puskurin laskemiseen tarvittavat merkit, eli siis n\u00e4emme kaikki merkit, jotka vaikuttavat puskuriin. (buffer size on n\u00e4iss\u00e4 testeiss\u00e4 64 ja b eli bytes per bit on esimerkiksi 20)<\/p>\n<p>Seuraavana edellisen rutiinin osittainen tuloste merkki merkilt\u00e4. t\u00e4m\u00e4 l\u00e4hinn\u00e4 kertoo, millaista suoraan kellolta tulevat merkit n\u00e4ytt\u00e4v\u00e4t: (huomaa ett\u00e4 esimerkiksi 1,3,5,6,8 jne puuttuvat, tuplia t\u00e4ss\u00e4 ei ole hmm&#8230;)<\/p>\n<pre>\u00a0246 248 251 253 255\u00a0\u00a0 2\u00a0\u00a0 4\u00a0\u00a0 7\u00a0\u00a0 9\u00a0 10\u00a0 11\u00a0 12\u00a0 13\u00a0 14\u00a0 15\u00a0 16\u00a0 17\r\n  18\u00a0 19\u00a0 20\u00a0 21\u00a0 22\u00a0 23\u00a0 24\u00a0 25\u00a0 26\u00a0 27\u00a0 28\u00a0 29\u00a0 30\u00a0 31\u00a0 32\u00a0 33\u00a0 34\r\n\u00a0 35\u00a0 36\u00a0 38\u00a0 39\u00a0 40\u00a0 41\u00a0 42\u00a0 43\u00a0 44\u00a0 45\u00a0 46\u00a0 47\u00a0 48\u00a0 49\u00a0 50\u00a0 51\u00a0 52\r\n\u00a0 53\u00a0 54\u00a0 55\u00a0 56\u00a0 57  58\u00a0 59\u00a0 60\u00a0 61\u00a0 62\u00a0 63\u00a0 64\u00a0 65\u00a0 66\u00a0 67\u00a0 68\u00a0 69\r\n\u00a0 70\u00a0 71\u00a0 72\u00a0 73\u00a0 74\u00a0 75\u00a0 76\u00a0 77\u00a0 78\u00a0 79\u00a0 80\u00a0 81\u00a0 82\u00a0 84\u00a0 85\u00a0 86\u00a0 87\r\n\u00a0 88\u00a0 89\u00a0 90\u00a0 91\u00a0 92\u00a0 93\u00a0 94\u00a0 95\u00a0 96\u00a0 97\u00a0 98\u00a0 99 100 101 102 103 104\r\n 105  97\u00a0 98\u00a0 99 100 101 102 103 104 105 106 107 108 109 110 111 112\r\n 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129\r\n 130 131 132 133 134 135 136 137 139 140 141 142 143 144 145 146 147\r\n 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164\r\n 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181\r\n 182 183 184 185 186 187 188 189 190 192 193 194 195 196 197 198 199\r\n 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216\r\n 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233\r\n 234 235 236 237 239 240 241 242 243 244 245 246 247 248 249 250 251\r\n 252 253 254 255\u00a0\u00a0 0\u00a0\u00a0 1\u00a0\u00a0 2\u00a0\u00a0 3\u00a0\u00a0 4\u00a0\u00a0 5\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n...\r\n<\/pre>\n<p>Ohjelma kaksi jakaa tulosteen riveihin, siten ett\u00e4 rivin pienin numero aloittaa aina rivin.<\/p>\n<pre>test_timer2()\r\n{\r\n\u00a0 int c,size,start;\r\n\u00a0 unsigned char *buffer;\r\n\r\n\u00a0 size=buffer_size*8*bytes_per_bit;\r\n\r\n\u00a0 if((buffer=malloc(size))==NULL) {\r\n\u00a0\u00a0\u00a0 fprintf(stderr,\"jarik2: cannot allocate testing buffer\");\r\n\u00a0 }\r\n\u00a0 for(c=0;c&lt;size;c++) {\r\n\u00a0\u00a0\u00a0 buffer[c]=clockbyte();\r\n\u00a0 }\r\n\r\n\u00a0 start=0;\r\n\u00a0 \/* same as test1 routine except cr in between largest and smallest number.\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n\u00a0\u00a0 *\/\r\n\u00a0 for(c=0;c&lt;size;c++) {\r\n\u00a0\u00a0\u00a0 if(start==1 &amp;&amp; buffer[c]&lt;buffer[c-1])\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 fprintf(stdout,\"\\n\");\r\n\u00a0\u00a0\u00a0 fprintf(stdout,\" %3d\",buffer[c]);\r\n\u00a0\u00a0\u00a0 start=1;\r\n\u00a0 }\r\n\u00a0 free(buffer);\r\n}<\/pre>\n<p>T\u00e4m\u00e4 versio on hiukan muokattu edellisest\u00e4(osa tulosteesta). Nolla on aina samalla kohdalla, t\u00e4ss\u00e4 voi jo vertailla eri jonoja hakemalla puuttuvia ja tuplia. (Puuttuvat ja tuplat antavat generaattorin satunnaisuuden)<\/p>\n<pre>\u00a0\u00a0 0\u00a0\u00a0 1\u00a0\u00a0 2\u00a0\u00a0 3\u00a0\u00a0 4\u00a0\u00a0 5\u00a0\u00a0 6\u00a0\u00a0 7\u00a0\u00a0 8\u00a0\u00a0 9\u00a0 10\u00a0 11\u00a0 12\u00a0 13\u00a0 14\u00a0 15\u00a0 16\u00a0 17\u00a0 18\u00a0 19\u00a0 20\u00a0 21\u00a0 22\u00a0 23\u00a0 24\u00a0 25\u00a0 26\u00a0 27\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n\u00a0 28\u00a0 29\u00a0 30\u00a0 31\u00a0 32\u00a0 33\u00a0 34\u00a0 35\u00a0 36\u00a0 37\u00a0 38\u00a0 39\u00a0 40\u00a0 41\u00a0 43\u00a0 44\u00a0 45\u00a0 46\u00a0 47\u00a0 48\u00a0 49\u00a0 50\u00a0 51\u00a0 52\u00a0 53\u00a0 54\u00a0 55\u00a0 56\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n\u00a0 57\u00a0 58\u00a0 59\u00a0 60\u00a0 61\u00a0 62\u00a0 63\u00a0 64\u00a0 65\u00a0 66\u00a0 67\u00a0 68\u00a0 69\u00a0 70\u00a0 71\u00a0 72\u00a0 73\u00a0 74\u00a0 75\u00a0 76\u00a0 77\u00a0 78\u00a0 79\u00a0 80\u00a0 81\u00a0 82\u00a0 83\u00a0 84\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n\u00a0 85\u00a0 86\u00a0 87\u00a0 88\u00a0 90\u00a0 90\u00a0 92\u00a0 93\u00a0 94\u00a0 95\u00a0 96\u00a0 97\u00a0 98\u00a0 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n\u00a0114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 138 139 140 141 142\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n\u00a0143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n\u00a0171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 190 191 192 193 194 195 196 197 198 199\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n\u00a0200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n\u00a0228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 248 249 250 251 252 253 254 255\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n\u00a0\u00a0 0\u00a0\u00a0 1\u00a0\u00a0 2\u00a0\u00a0 3\u00a0\u00a0 4\u00a0\u00a0 5\u00a0\u00a0 6\u00a0\u00a0 7\u00a0\u00a0 8\u00a0\u00a0 9\u00a0 10\u00a0 11\u00a0 12\u00a0 13\u00a0 14\u00a0 15\u00a0 16\u00a0 17\u00a0 18\u00a0 19\u00a0 20\u00a0 21\u00a0 22\u00a0 23\u00a0 24\u00a0 25\u00a0 26\u00a0 27\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n\u00a0 28\u00a0 29\u00a0 30\u00a0 31\u00a0 32\u00a0 33\u00a0 34\u00a0 35\u00a0 36\u00a0 37\u00a0 38\u00a0 39\u00a0 40\u00a0 41\u00a0 42\u00a0 44\u00a0 44\u00a0 46\u00a0 47\u00a0 48\u00a0 49\u00a0 50\u00a0 51\u00a0 52\u00a0 53\u00a0 54\u00a0 55\u00a0 56\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n\u00a0 57\u00a0 58\u00a0 59\u00a0 60\u00a0 61\u00a0 62\u00a0 63\u00a0 64\u00a0 65\u00a0 66\u00a0 67\u00a0 68\u00a0 69\u00a0 70\u00a0 71\u00a0 72\u00a0 73\u00a0 74\u00a0 75\u00a0 76\u00a0 77\u00a0 78\u00a0 79\u00a0 80\u00a0 81\u00a0 82\u00a0 83\u00a0 84\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n\u00a0 85\u00a0 86\u00a0 87\u00a0 88\u00a0 89\u00a0 90\u00a0 91\u00a0 92\u00a0 93\u00a0 94\u00a0 95\u00a0 96\u00a0 97\u00a0 98\u00a0 99 100 101 102 104 104 106 107 108 109 110 111 112 113\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n\u00a0114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n\u00a0142 143 144 145 146 147 148 149 150 151 154 156 158 161 164 166 168 171 173 176 178 180 183 185 188 190 193 195\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n\u00a0197 199 200 201 202 203 204 205 206 207 208 209 210 211 212 214 214 216 217 218 219 220 221 222 223 224 225 226\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n\u00a0227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n\u00a0255\r\n...\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n<\/pre>\n<p>Kolmannessa versiossa tulostetaan(osa listasta) merkeist\u00e4 vain 4 alinta bitti\u00e4:<\/p>\n<pre>test_timer3()\r\n{\r\n\u00a0 int c,size;\r\n\u00a0 unsigned char *buffer;\r\n\r\n\u00a0 size=buffer_size*8*bytes_per_bit;\r\n\r\n\u00a0 if((buffer=malloc(size))==NULL) {\r\n\u00a0\u00a0\u00a0 fprintf(stderr,\"jarik2: cannot allocate testing buffer\");\r\n\u00a0 }\r\n\r\n\u00a0 \/* Same as previous routine except only low 4 bits printed. *\/\r\n\u00a0 for(c=0;c&lt;size;c++) {\r\n\u00a0\u00a0\u00a0 buffer[c]=clockbyte()&amp;0x0f;\r\n\u00a0 }\r\n\r\n\u00a0 for(c=0;c&lt;size;c++) {\r\n\u00a0\u00a0\u00a0 if(c&gt;0 &amp;&amp; c%64==0)\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 fprintf(stdout,\"\\n\");\r\n\u00a0\u00a0\u00a0 fprintf(stdout,\" %2d\",buffer[c]);\r\n\u00a0 }\r\n\r\n\u00a0 free(buffer);\r\n}\r\n\r\n\u00a010 13 15\u00a0 1\u00a0 4\u00a0 6\u00a0 9 11 14\u00a0 0\u00a0 2\u00a0 5\u00a0 7\u00a0 9 10 11 12 13 14 15\u00a0 0\u00a0 1\u00a0 2\u00a0 3\u00a0 4\u00a0 5\u00a0 7\u00a0 7\u00a0 9 10 11 12 13 14 15\u00a0 0\u00a0 1\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n\u00a0 2\u00a0 3\u00a0 4\u00a0 5\u00a0 6\u00a0 7\u00a0 8\u00a0 9 10 11 12 13 14 15\u00a0 0\u00a0 1\u00a0 2\u00a0 3\u00a0 5\u00a0 6\u00a0 7\u00a0 8\u00a0 9 10 11 12 13 14 15\u00a0 0\u00a0 1\u00a0 2\u00a0 3\u00a0 4\u00a0 5\u00a0 6\u00a0 7\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n\u00a0 8\u00a0 9 10 11 12 13 14 15\u00a0 0\u00a0 1\u00a0 2\u00a0 3\u00a0 4\u00a0 5\u00a0 6\u00a0 7\u00a0 8\u00a0 9 10 11 13 14 15\u00a0 0\u00a0 1\u00a0 2\u00a0 3\u00a0 4\u00a0 5\u00a0 6\u00a0 7\u00a0 8\u00a0 9 10 11 12 13\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n\u00a014 15\u00a0 0\u00a0 1\u00a0 2\u00a0 3\u00a0 4\u00a0 5\u00a0 6\u00a0 7\u00a0 8\u00a0 9 10 11 12 13 14\u00a0 0\u00a0 0\u00a0 2\u00a0 3\u00a0 4\u00a0 5\u00a0 6\u00a0 7\u00a0 8\u00a0 9 10 11 12 13 14 15\u00a0 0\u00a0 1\u00a0 2\u00a0 3\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n\u00a0 4\u00a0 5\u00a0 6\u00a0 7\u00a0 8\u00a0 9 10 11 12 13 14 15\u00a0 0\u00a0 1\u00a0 2\u00a0 3\u00a0 4\u00a0 5\u00a0 7\u00a0 8\u00a0 9 10 11 12 13 14 15\u00a0 0\u00a0 1\u00a0 2\u00a0 3\u00a0 4\u00a0 5\u00a0 6\u00a0 7\u00a0 8\u00a0 9\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n\u00a010 11 12 13 14 15\u00a0 0\u00a0 1\u00a0 2\u00a0 3\u00a0 4\u00a0 5\u00a0 6\u00a0 7\u00a0 8\u00a0 9 10 11 12 13 14 15\u00a0 0\u00a0 1\u00a0 2\u00a0 4\u00a0 5\u00a0 6\u00a0 7\u00a0 8\u00a0 9 10 11 12 13 14 15\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n\u00a0 0\u00a0 1\u00a0 2\u00a0 3\u00a0 4\u00a0 5\u00a0 6\u00a0 7\u00a0 8\u00a0 9 10 11 12 13 14 15\u00a0 0\u00a0 1\u00a0 2\u00a0 3\u00a0 4\u00a0 5\u00a0 6\u00a0 7\u00a0 8\u00a0 9 10 11 12 13 14 15\u00a0 0\u00a0 2\u00a0 2\u00a0 4\u00a0 5\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n\u00a0 6\u00a0 7\u00a0 8\u00a0 9 10 11 12 13 14 15\u00a0 0\u00a0 1\u00a0 2\u00a0 3\u00a0 4\u00a0 5\u00a0 6\u00a0 7\u00a0 8\u00a0 9 10 11 12 13 14 15\u00a0 0\u00a0 1\u00a0 2\u00a0 3\u00a0 4\u00a0 5\u00a0 6\u00a0 7\u00a0 8\u00a0 9 10\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n\u00a011 12 13 14 15\u00a0 0\u00a0 2\u00a0 3\u00a0 4\u00a0 5\u00a0 6\u00a0 7\u00a0 8\u00a0 9 10 11 12 13 14 15\u00a0 0\u00a0 1\u00a0 2\u00a0 3\u00a0 4\u00a0 5\u00a0 6\u00a0 7\u00a0 8\u00a0 9 10 11 12 13 14 15\u00a0 0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n\u00a0 1\u00a0 2\u00a0 3\u00a0 4\u00a0 5\u00a0 6\u00a0 7\u00a0 8\u00a0 9 10 11 12 13 14\u00a0 0\u00a0 1\u00a0 2\u00a0 3\u00a0 4\u00a0 5\u00a0 6\u00a0 7\u00a0 8\u00a0 9 10 11 12 13 14 15\u00a0 0\u00a0 1\u00a0 2\u00a0 3\u00a0 4\u00a0 5\u00a0 6\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n\u00a0 7\u00a0 9 10 12 13 14 15\u00a0 0\u00a0 1\u00a0 2\u00a0 3\u00a0 4\u00a0 5\u00a0 6\r\n...<\/pre>\n<p>Ja nelj\u00e4nness\u00e4 versiossa vaihdetaan taas rivi\u00e4 numerosasrjojen v\u00e4liss\u00e4:<\/p>\n<pre>test_timer4()\r\n{\r\n\u00a0 int c,size,start;\r\n\u00a0 unsigned char *buffer;\r\n\r\n\u00a0 size=buffer_size*8*bytes_per_bit;\r\n\r\n\u00a0 if((buffer=malloc(size))==NULL) {\r\n\u00a0\u00a0\u00a0 fprintf(stderr,\"jarik2: cannot allocate testing buffer\");\r\n\u00a0 }\r\n\r\n\u00a0 for(c=0;c&lt;size;c++) {\r\n\u00a0\u00a0\u00a0 buffer[c]=clockbyte()&amp;0x0f;\r\n\u00a0 }\r\n\r\n\u00a0 start=0;\r\n  for(c=0;c&lt;size;c++) {\r\n\u00a0\u00a0\u00a0 if(start==1 &amp;&amp; buffer[c]&lt;buffer[c-1])\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 fprintf(stdout,\"\\n\");\r\n\u00a0\u00a0\u00a0 fprintf(stdout,\" %2d\",buffer[c]);\r\n\u00a0\u00a0\u00a0 start=1;\r\n\u00a0 }\r\n\r\n\u00a0 free(buffer);\r\n}\r\n\r\n<\/pre>\n<p>T\u00e4ss\u00e4 on testin 4 osatuloste. T\u00e4ss\u00e4 voidaan selv\u00e4sti havaita puuttuvat ja kaksois merkit.<\/p>\n<pre>\u00a0 0\u00a0 1\u00a0 2\u00a0 3\u00a0 4\u00a0 5\u00a0 6\u00a0 7\u00a0 8\u00a0 9 10 11 12 13 14 15\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n\u00a0 1\u00a0 1\u00a0 3\u00a0 4\u00a0 5\u00a0 6\u00a0 7\u00a0 8\u00a0 9 10 11 12 13 14 15\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n\u00a0 0\u00a0 1\u00a0 2\u00a0 3\u00a0 4\u00a0 5\u00a0 6\u00a0 7\u00a0 8\u00a0 9 10 11 12 13 14 15\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n\u00a0 0\u00a0 1\u00a0 2\u00a0 3\u00a0 4\u00a0 5\u00a0 6\u00a0 7\u00a0 8\u00a0 9 10 11 12 13 14\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n\u00a0 0\u00a0 1\u00a0 2\u00a0 3\u00a0 4\u00a0 5\u00a0 6\u00a0 7\u00a0 8\u00a0 9 10 11 12 13 14 15\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n\u00a0 0\u00a0 1\u00a0 2\u00a0 3\u00a0 4\u00a0 5\u00a0 6\u00a0 7\u00a0 8\u00a0 9 10 11 12 13 14 15\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n\u00a0 0\u00a0 1\u00a0 2\u00a0 3\u00a0 4\u00a0 5\u00a0 6\u00a0 7\u00a0 8\u00a0 9 11 11 13 14 15\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n\u00a0 0\u00a0 1\u00a0 2\u00a0 3\u00a0 4\u00a0 5\u00a0 6\u00a0 7\u00a0 8\u00a0 9 10 11 12 13 14 15\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n\u00a0 0\u00a0 1\u00a0 2\u00a0 3\u00a0 4\u00a0 5\u00a0 6\u00a0 7\u00a0 8\u00a0 9 10 11 12 13 14 15\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n\u00a0 0\u00a0 1\u00a0 2\u00a0 3\u00a0 4\u00a0 6\u00a0 7\u00a0 8\u00a0 9 10 11 12 13 14 15\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n\u00a0 0\u00a0 1\u00a0 2\u00a0 3\u00a0 4\u00a0 5\u00a0 6\u00a0 7\u00a0 8\u00a0 9 10 11 12 13 14 15\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n\u00a0 0\u00a0 1\u00a0 2\u00a0 3\u00a0 4\u00a0 5\u00a0 6\u00a0 9 12 14\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n\u00a0 1\u00a0 3\u00a0 6\u00a0 8 10 13 15\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n\u00a0 2\u00a0 4\u00a0 7\u00a0 9 12 14\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n\u00a0 1\u00a0 3\u00a0 5\u00a0 6\u00a0 7\u00a0 8\u00a0 9 10 11 12 13 14 15\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n\u00a0 0\u00a0 1\u00a0 2\u00a0 3\u00a0 4\u00a0 5\u00a0 6\u00a0 7\u00a0 8\u00a0 9 10 11 12 13 14 15\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n\u00a0 0\u00a0 1\u00a0 2\u00a0 3\u00a0 4\u00a0 6\u00a0 6\u00a0 8\u00a0 9 10 11 12 13 14 15\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n\u00a0 0\u00a0 1\u00a0 2\u00a0 3\u00a0 4\u00a0 5\u00a0 6\u00a0 7\u00a0 8\u00a0 9 10 11 12 13 14 15\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n\u00a0 0\u00a0 1\u00a0 2\u00a0 3\u00a0 4\u00a0 5\u00a0 8 10 13 15\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n\u00a0 2\u00a0 4\u00a0 6\u00a0 9 11 14\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n\u00a0 0\u00a0 3\u00a0 5\u00a0 7\u00a0 8\u00a0 9 10 11 12 13 14 15\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n\u00a0 0\u00a0 1\u00a0 2\u00a0 3\u00a0 5\u00a0 7 10 12 15\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n\u00a0 1\u00a0 4\u00a0 6\u00a0 8 11 13\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n\u00a0 0\u00a0 2\u00a0 4\u00a0 7\u00a0 9 12 14\r\n...<\/pre>\n<p>Seuraavassa on osatuloste rutiinin p\u00e4\u00e4ohjelmasta (genbytes), joka lukee n\u00e4it\u00e4 lukuja ja muodostaa puskuriin satunnaisbittijonon:<\/p>\n<p>T\u00e4ss\u00e4 ensimm\u00e4isess\u00e4 tietueessa generaattori on aloitustilassa, sill\u00e4 on tyhj\u00e4 puskuri, joka on t\u00e4ynn\u00e4 nollamerkkej\u00e4. Todellisuudessa generaattorin alkuarvo voidaan t\u00e4ytt\u00e4\u00e4 kutsuvassa ohjelmassa.<\/p>\n<pre>genbytes input\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000<\/pre>\n<p>T\u00e4ss\u00e4 toisessa tietueessa (genbytes():in ensimm\u00e4isen luupin j\u00e4lkeen) n\u00e4emme selv\u00e4sti kellon luvun tuoman rakenteen, merkit alkavat 0xb0 merkist\u00e4 ja loppuvat 0xdf merkkiin (huomaa puuttuvat b1,b2 ja tuplat b4, b7, bb, be jne). T\u00e4ss\u00e4 viel\u00e4 ensimm\u00e4inen luuppi:<\/p>\n<pre>for(d=0;d&lt;size;d++) { \/* K\u00e4yd\u00e4\u00e4n l\u00e4pi koko puskuri *\/\r\n\u00a0 byte=clockbyte();   \/* Luetaan kello *\/\r\n\u00a0 e=buffer[d];        \/* Luetaan vuorossa oleva merkki *\/\r\n                      \/* Siirret\u00e4\u00e4n ylin bitti alas ja 7 alabitti\u00e4 askel yl\u00f6s *\/\r\n\u00a0 e=((e&amp;0x80)&gt;&gt;7) | ((e&amp;0x7f)&lt;&lt;1);  \r\n\u00a0 e=e^byte;           \/* xorataan kellomerkill\u00e4 *\/\r\n\u00a0 buffer[d]=e;        \/* laitetaan takaisin samaan paikkaan puskuriin *\/\r\n}\r\n<\/pre>\n<pre>genbytes after adding clock bits\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\nb0b3b4b4b5b6b7b7b8b9b9babbbbbcbdbebebfc0c0c1c2c3c3c4c5c5c6c7c8c8c9cacacbcccdcdcecfcfd0d1d2d2d3d4d5d5d6d7d7d8d9d9dadbdcdcdddededff<\/pre>\n<p>Kolmannessa riviss\u00e4 genbytes rutiinin j\u00e4lkimm\u00e4inen kappale sekoittaa merkkien j\u00e4rjestyksen merkkien perusteella: (merkit ovat viel\u00e4 v\u00e4lilt\u00e4 0xb0-0xdf). T\u00e4ss\u00e4 viel\u00e4 toinen luuppi:<\/p>\n<pre>for(d=0;d&lt;size;d++) {   \/* K\u00e4yd\u00e4\u00e4n koko puskuri l\u00e4pi merkki merkilt\u00e4 *\/\r\n\u00a0 f=(f+buffer[d])%size; \/* f:\u00e4\u00e4n lis\u00e4t\u00e4\u00e4n puskurin t\u00e4m\u00e4nhetkinen merkki mod size *\/\r\n\u00a0 e=buffer[d];          \/* vaihdetaan d:s(t\u00e4m\u00e4nhetkinen) ja f:s merkki *\/\r\n\u00a0 buffer[d]=buffer[f];\r\n\u00a0 buffer[f]=e;\r\n}\r\n<\/pre>\n<pre>genbytes after mixing bytes\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\nddcbb4bac9d9d2c8c6c1bcc3b4dad7d3c4d0b8bfc0c5b7c3dec7becab3bdcadbb7b0d4dcbbd8c2b6c8b9c5d1cfd6d2b9cecdded9d5d7dcbecfdfccbbb5cdd5c0<\/pre>\n<p>Huomaa ett\u00e4 toisessa tietueessa alin bitti on jonoina nollia ja ykk\u00f6si\u00e4, mutta kun puskurin &#8220;sekoitus&#8221; tehd\u00e4\u00e4n (kolmannella rivill\u00e4) nollien ja ykk\u00f6sten j\u00e4rjestys muuttuu satunnaiseksi. Puskurin pituuden pit\u00e4\u00e4 olle riitt\u00e4v\u00e4n pitk\u00e4 (jos aloituspuskuri on tyhj\u00e4), ettei puskurin riville tule pelk\u00e4st\u00e4\u00e4n nollia tai ykk\u00f6si\u00e4. (nollien lukum\u00e4\u00e4r\u00e4 rivill\u00e4 tilastollisesti ~ykk\u00f6sten lukum\u00e4\u00e4r\u00e4).<\/p>\n<p>Nelj\u00e4nness\u00e4 riviss\u00e4 lis\u00e4\u00e4mme toisen kellorivin tulosteeseen. Huomaa, ett\u00e4 kun nyt lis\u00e4\u00e4mme puskuriin uuden rivin sit\u00e4 ei kirjoiteta samassa j\u00e4rjestyksess\u00e4 kun edellisell\u00e4 kierroksella, edellisen kierroksen merkit on sekoitettu satunnaisesti. Sekoituksessa k\u00e4ytet\u00e4\u00e4n kellon tuottamia t\u00e4m\u00e4n hetkisi\u00e4 merkkej\u00e4 (siis puskurin sis\u00e4lt\u00f6\u00e4).<\/p>\n<p>Huomaa lis\u00e4ksi ett\u00e4 yhden merkin bitit on rollattu yl\u00f6sp\u00e4in, joten kellon tarkin bittit tapaa itseasiassa ensimm\u00e4isen rivin ylimm\u00e4n bitin, ja ensimm\u00e4isess\u00e4 kierroksessa lis\u00e4tty kellobitti on nyt toisessa bitiss\u00e4.<\/p>\n<pre>genbytes after adding clock bits\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\ncae51a01e7c6d3e7fafb00fe13ced4dbf4df0f00010bee053e0cf910e2fd123fe7e82333fc3d08e01ffc04330e3f37e0090f28253c3821e4062502ebf706351f<\/pre>\n<p>Viidenness\u00e4 riviss\u00e4 sekoitamme bitit taas uuteen j\u00e4rjestykseen, ja jatkamme kierroksia, kunnes kellon alin bitti on koskenut kaikkiin puskurin bitteihin.<\/p>\n<pre>genbytes after mixing bytes\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n3fe8fc0801fbfee7f7101f06e7122823df3df937023313383c0625ee051ae53e09d3cee035ebc61ff425e4fcd40c0421fd00ca0edbe00b0fe23fe70ffa013300\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\ngenbytes after adding clock bits\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n4ae4cf2735cfc4f6d51b0230f21a6e79ff3bb22c472562353e4a0d95427d813759ebd08c2498dd6eb8189baafd4d5d14ac57cd45ed9b4d4299239140aa620761\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\ngenbytes after mixing bytes\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n623723599881ddcf27354a02991ac4d0f2f6b279ac0d5d6e07cf479bfd18aaeb4a61d52c457d30b84d254257ed6e3e421b14ff3b408caacd24e43591954d629b\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\ngenbytes after adding clock bits\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n369db247c4f54c68b6936efec8c8755c1b129af2581bb8df0a9b8b31fd375dde9dc8a05386f76d7f955a94bfc9ce6f90233de96197014c8152d2763f3684db28\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\ngenbytes after mixing bytes\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\nc49a90ce1bb63f536ec9c80a1b7ffd61f2df3d315a1236819397d29d9df79b76688bbf474cb84cfe3784865c01f56fc82895e952b2db6da0de3675c8235d9458\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\ngenbytes after adding clock bits\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n2685902f84deca13692526a38e4741785e03c6df0a9bd3c3e6ee67f8ff2bf22a16d0b74651bb5336a2c4c076cd3b0e4082f90070b0620c966ab4334b9c61f56c\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\ngenbytes after mixing bytes\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\nf52ae67640cac3c0d06a7061693b0e90a22b4678d3f84bb02fde008485c4b7a35e26475113bb25b4c6ff8e0c6cee9bf91696035333419c26f2df826267cd360a\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\ngenbytes after adding clock bits\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n853bbd9df1e7f4f2d5a196b4a50e64583f2cf78cda8ce81e213d818b890aebc339ca0925aefec3e3067391955653b863bdbc9435f516acda73289d5c5701f78f\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\ngenbytes after mixing bytes\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n910e3f815721e82c732528caf794da89a553da7309955caeebd5f13df71ebd3556f2b4e38fa10a1606acc3859d9d3bbdf596398bf4fe6358bce7c3b864018c8c\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\ngenbytes after adding clock bits\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n0e32502c9e73e06ad57964a0da1f822b739f8fdc29178560e994dc3aae7e3929e8a12c8158045c654513cc4077763835a47d2246bbae95e42c9ad126905a4043\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\ngenbytes after mixing bytes\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n7d136a76bb50dc5a26a0354595642b732c04ae1740393a2c909eae82dc0e5c9a77e4e9811f40a4d53879a129d17e43cc6094222c32584665e029858f9fdae873\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\ngenbytes after adding clock bits\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n10cc3f009a4d575ba3b19b78d93ba212adfeabd9788b8da2dac6a1f847e24735eec8d1003d844cae76f54b5aaaf68c92cc2449566bbf9cdbd340180b2ba0c7f1\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\ngenbytes after mixing bytes\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\nc700b13f00785b5a12fe3badf8189a928ba384cca1cce2aa0b5678a24deea2aec82bdb353d768d576b4747f68cbf4cd94b9c9bd9a040f5da24d3d1c610f1ab49\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n<\/pre>\n<p>Edellinen rivi on viimeinen rivi, kuten se olisi tulostettu genbytes ohjelman b arvolla 1. Lis\u00e4\u00e4m\u00e4ll\u00e4 b:n arvoa voidaan tehd\u00e4 useampia kahdeksan bitin kierroksia. Itse olen ajatellut, ett\u00e4 kellodatassa olisi bitin verran tietoa kahtakymment\u00e4 byte\u00e4 kohti, eli rutiinia ajettaisiin b:n arvolla 20 (Edit: HUOM2). Generaattorissa kaikki luetut kellomerkit vaikuttavat lopullisen puskurilliseen eli jos haluat saada puskurin sis\u00e4ll\u00f6n ilman sit\u00e4 (sis\u00e4lt\u00f6\u00e4) joudut arvaamaan kaikki tuplat ja puuttuvat merkit ajoajankohdan lis\u00e4ksi.<\/p>\n<p>Edellinen esimerkki on laadittu melko hitaalla laitteella (raspberry pi). Nopeammalla laitteella tulee enemm\u00e4n tuplia ja v\u00e4hemm\u00e4n puuttuvia. Itseasiassa t\u00e4ss\u00e4 on viel\u00e4 lopuksi testi nopeampaa laitetta varten:<\/p>\n<pre>test_timer5()\r\n{\r\n\u00a0 int c,size,lastbits,countbits;\r\n\u00a0 unsigned char *buffer;\r\n\r\n\u00a0 size=buffer_size*8*bytes_per_bit;\r\n\r\n\u00a0 if((buffer=malloc(size))==NULL) {\r\n\u00a0\u00a0\u00a0 fprintf(stderr,\"jarik2: cannot allocate testing buffer\");\r\n\u00a0 }\r\n\r\n\u00a0 for(c=0;c&lt;size;c++) {\r\n\u00a0\u00a0\u00a0 buffer[c]=clockbyte()&amp;0xf;\r\n\u00a0 }\r\n\r\n\u00a0 lastbits=-1;\r\n\u00a0 for(c=0;c&lt;size;c++) {\r\n\u00a0\u00a0\u00a0 if(lastbits==-1) {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 lastbits=buffer[c];\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 countbits=1;\r\n\u00a0\u00a0\u00a0 } else if(lastbits!=buffer[c]) {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 fprintf(stdout,\" %d(%d)\",countbits,lastbits);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 if(lastbits&gt;buffer[c]) {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 fprintf(stdout,\"\\n\");\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 }\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 lastbits=buffer[c];\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 countbits=1;\r\n\u00a0\u00a0\u00a0 } else if(lastbits==buffer[c]) {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 countbits++;\r\n\u00a0\u00a0\u00a0 }\r\n\u00a0 }\r\n\u00a0 if(c&gt;0)\r\n\u00a0\u00a0\u00a0 fprintf(stdout,\" %d(%d)\",countbits,lastbits);\r\n\u00a0 fprintf(stdout,\"\\n\");\r\n\r\n  free(buffer);\r\n}<\/pre>\n<p>Seuraavassa testiohjelman 5 osatuloste: se tulostaa jokaisesta lukemasta m\u00e4\u00e4r\u00e4n ja numeron, esimerkiksi 2(3) tarkoittaa kaksi kappaletta arvoa 3. Erillisten arvojoukkojen v\u00e4liss\u00e4 on cr.<\/p>\n<pre>\u00a01(0) 1(1) 1(2) 1(3) 1(4) 1(5) 1(6) 1(7) 1(8) 1(9) 1(10) 1(11) 1(12) 1(13) 1(14) 1(15)\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n\u00a01(0) 1(1) 1(2) 1(3) 1(4) 1(5) 1(6) 1(7) 1(8) 1(9) 1(10) 1(11) 1(12) 1(13) 1(14) 1(15)\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n\u00a01(0) 1(1) 1(2) 1(4) 1(5) 1(6) 1(7) 1(8) 1(9) 1(10) 1(11) 1(12) 1(13) 1(14) 1(15)\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n\u00a01(0) 1(1) 1(2) 1(3) 1(4) 1(5) 1(6) 1(8) 1(9) 1(10) 1(11) 1(12) 1(13) 1(14) 1(15)\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n\u00a01(0) 1(1) 1(2) 1(3) 1(4) 1(5) 1(6) 1(7) 1(8) 1(9) 1(10) 1(11) 1(12) 1(13) 1(14) 1(15)\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n\u00a01(0) 1(1) 1(2) 1(3) 1(4) 1(5) 1(7) 1(8) 1(9) 1(10) 1(11) 1(12) 1(13) 1(14) 1(15)\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n\u00a01(0) 1(2) 1(5) 1(7) 1(10) 1(12) 1(15)\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n\u00a01(1) 1(4) 1(6) 1(8) 1(11) 1(13)\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n\u00a01(0) 1(2) 1(5) 1(7) 1(10) 1(12) 1(14) 1(15)\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n\u00a01(1) 1(2) 1(3) 1(6) 1(8) 1(11) 1(13)\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n\u00a01(0) 1(2) 1(4) 1(7) 1(9) 1(12) 1(14)\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n\u00a01(1) 1(3) 1(6) 1(8) 1(11) 1(13)\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n\u00a01(0) 1(1) 1(2) 1(3) 1(4) 1(5) 1(8) 1(10) 1(13) 1(15)\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n\u00a01(2) 1(4) 1(6) 1(9) 1(11) 1(14)\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n\u00a01(0) 1(3) 1(5) 1(7) 1(10) 1(12) 1(15)\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n\u00a01(1) 1(2) 1(3) 1(4) 1(5) 1(6) 1(7) 1(8) 1(9) 1(10) 1(11) 1(12) 1(13) 1(14) 1(15)\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n\u00a01(1) 1(3) 1(6) 1(8) 1(11) 1(13)\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n\u00a01(0) 1(2) 1(4) 1(7) 1(9) 1(11) 1(14)\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n\u00a01(1) 1(3) 1(6) 1(8) 1(10) 1(13) 1(14) 1(15)\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n\u00a01(0) 1(1) 1(2) 1(3) 1(4) 1(5) 1(6) 1(7) 1(8) 1(9) 1(10) 1(11) 1(12) 1(15)\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n\u00a01(1) 1(3) 1(6) 1(8) 1(10) 1(13)\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n\u00a01(0) 1(2) 1(5) 1(7) 1(9) 1(12) 1(14)\r\n...\r\n<\/pre>\n<p>Edit: Viel\u00e4 yksi juttu: seuraava ohjelma laskee samaa merkki\u00e4 sis\u00e4lt\u00e4vien merkkien m\u00e4\u00e4r\u00e4n jonojen pituuksittain:<\/p>\n<pre>#define RUNSMAX 50\r\n\r\nint runs8[RUNSMAX];\r\n\r\nreset_runs8()\r\n{\r\n\u00a0 int c;\r\n\r\n\u00a0 for(c=0;c&lt;RUNSMAX;c++) {\r\n\u00a0\u00a0\u00a0 runs8[c]=0;\r\n\u00a0 }\r\n}\r\n\r\ntest_runs8(int size, unsigned char *buffer)\r\n{\r\n\u00a0 int c,d,firstbyte,count,total;\r\n\r\n\u00a0 firstbyte=-1;\r\n\u00a0 count=0;\r\n\u00a0 for(c=0;c&lt;size;c++) {\r\n\u00a0\u00a0\u00a0 if(firstbyte==-1) {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 firstbyte=buffer[c];\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 count=1;\r\n\u00a0\u00a0\u00a0 } else {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 if(buffer[c]==firstbyte) {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 count++;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 } else {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 if(count&gt;=RUNSMAX)\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 count=RUNSMAX-1;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 if(count&lt;RUNSMAX) {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 runs8[count]++;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 firstbyte=buffer[c];\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 count=1;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 }\r\n\u00a0\u00a0\u00a0 }\r\n\u00a0 }\r\n\u00a0 if(count&gt;=RUNSMAX)\r\n\u00a0\u00a0\u00a0 count=RUNSMAX-1;\r\n\u00a0 if(count&lt;RUNSMAX) {\r\n\u00a0\u00a0\u00a0 runs8[count]++;\r\n\u00a0 }\r\n}\r\n\r\nresults_runs8()\r\n{\r\n\u00a0 int c,d,total;\r\n\u00a0 char tmp[32],buffer[4096];\r\n\r\n\u00a0 total=0;\r\n\r\n\u00a0 *buffer='\\0';\r\n\u00a0 for(d=RUNSMAX-1;d&gt;0 &amp;&amp; runs8[d]==0;d--);\r\n\u00a0 for(c=1;c&lt;=d;c++) {\r\n\u00a0\u00a0\u00a0 sprintf(tmp,\" %d:%d\",c,runs8[c]);\r\n\u00a0\u00a0\u00a0 strcat(buffer,tmp);\r\n\u00a0\u00a0\u00a0 total+=c*runs8[c];\r\n\u00a0 }\r\n\u00a0 message(\"runs8: any: %s\",buffer);\r\n\u00a0 message(\"runs8: total:\u00a0 %d\",total);\r\n}<\/pre>\n<p>Se tulostaa (hiukan nopeammalla koneella) seuraavan listan. Listan perusteella kellodatassa on eniten nelj\u00e4n ja viiden merkin pituisia samaa merkki\u00e4 sis\u00e4lt\u00e4vi\u00e4 sarjoja eli ne ovat ilmeisesti perusjono ja 1, 2, 3 ja 6 merkin sarjoja voidaan pit\u00e4\u00e4 satunnaisuutena.<\/p>\n<pre>runs8: any:\u00a0 1:139 2:145 3:128 4:1292 5:2841 6:49\r\nruns8: total:\u00a0 20480<\/pre>\n<p>N\u00e4yte datasta (test_timer1())<\/p>\n<pre>\u00a0237 237 237 237 238 238 238 238 238 239 239 239 239 240 240 240 240 240\r\n 241 241 241 241 242 242 242 242 242 243 243 243 243 244 244 244 244 244\r\n 245 245 245 245 246 246 246 246 246 247 247 247 247 248 248 248 248 248\r\n 249 249 249 249 250 250 250 250 250 251 251 251 251 252 252 252 252 252\r\n 253 253 253 253 254 254 254 254 254 255 255 255 255\u00a0\u00a0 0\u00a0\u00a0 0\u00a0\u00a0 0\u00a0\u00a0 0\u00a0\u00a0 0\r\n\u00a0\u00a0 1\u00a0\u00a0 1\u00a0\u00a0 1\u00a0\u00a0 1\u00a0\u00a0 2\u00a0\u00a0 2\u00a0\u00a0 2\u00a0\u00a0 2\u00a0\u00a0 2\u00a0\u00a0 3\u00a0\u00a0 3\u00a0\u00a0 3\u00a0\u00a0 3\u00a0\u00a0 4\u00a0\u00a0 4\u00a0\u00a0 4\u00a0\u00a0 4\u00a0\u00a0 4\r\n\u00a0\u00a0 5\u00a0\u00a0 5\u00a0\u00a0 5\u00a0\u00a0 5\u00a0\u00a0 5\u00a0\u00a0 6\u00a0\u00a0 6\u00a0\u00a0 6\u00a0\u00a0 6\u00a0\u00a0 7\u00a0\u00a0 7\u00a0\u00a0 7\u00a0\u00a0 7\u00a0\u00a0 7\u00a0\u00a0 8\u00a0\u00a0 8\u00a0\u00a0 8\u00a0\u00a0 8\r\n\u00a0\u00a0 8\u00a0\u00a0 9\u00a0\u00a0 9\u00a0\u00a0 9\u00a0\u00a0 9\u00a0 10\u00a0 10\u00a0 10\u00a0 10\u00a0 10\u00a0 11\u00a0 11\u00a0 11\u00a0 11\u00a0 11\u00a0 12\u00a0 12\u00a0 12\r\n\u00a0 12\u00a0 13\u00a0 13\u00a0 13\u00a0 13\u00a0 13\u00a0 14\u00a0 14\u00a0 14\u00a0 14\u00a0 15\u00a0 15\u00a0 15\u00a0 15\u00a0 15\u00a0 16\u00a0 16\u00a0 16\r\n\u00a0 16\u00a0 17\u00a0 17\u00a0 17\u00a0 17\u00a0 17\u00a0 18\u00a0 18\u00a0 18\u00a0 18\u00a0 19\u00a0 19\u00a0 19\u00a0 19\u00a0 19\u00a0 20\u00a0 20\u00a0 20\r\n\u00a0 20\u00a0 21\u00a0 21\u00a0 21\u00a0 21\u00a0 21\u00a0 22\u00a0 22\u00a0 22\u00a0 22\u00a0 23\u00a0 23\u00a0 23\u00a0 23\u00a0 23\u00a0 24\u00a0 24\u00a0 24\r\n\u00a0 24\u00a0 25\u00a0 25\u00a0 25\u00a0 25\u00a0 25\u00a0 26\u00a0 26\u00a0 26\u00a0 26\u00a0 27\u00a0 27\u00a0 27\u00a0 27\u00a0 27\u00a0 28\u00a0 28\u00a0 28\r\n\u00a0 28\u00a0 29\u00a0 29\u00a0 29\u00a0 29\u00a0 29\u00a0 30\u00a0 30\u00a0 30\u00a0 30\u00a0 31\u00a0 31\u00a0 31\u00a0 31\u00a0 31\u00a0 32\u00a0 32\u00a0 32\r\n\u00a0 32\u00a0 33\u00a0 33\u00a0 33\u00a0 33\u00a0 33\u00a0 34\u00a0 34\u00a0 34\u00a0 34\u00a0 35\u00a0 35\u00a0 35\u00a0 35\u00a0 35\u00a0 36\u00a0 36\u00a0 36\r\n\u00a0 36\u00a0 37\u00a0 37\u00a0 37\u00a0 37\u00a0 37\u00a0 38\u00a0 38\u00a0 38\u00a0 38\u00a0 39\u00a0 39\u00a0 39\u00a0 39\u00a0 39\u00a0 40\u00a0 40\u00a0 40\r\n\u00a0 40\u00a0 40\u00a0 41\u00a0 41\u00a0 41\u00a0 41\u00a0 42\u00a0 42\u00a0 42\u00a0 42\u00a0 42\u00a0 43\u00a0 43\u00a0 43\r\n...<\/pre>\n<p>Tuloste raportilla test_timer5(): En kyll\u00e4 nelosen ja viitosen vaihteluitakaan l\u00e4htisi arvaamaan..<\/p>\n<pre> 5(0) 5(1) 4(2) 5(3) 5(4) 4(5) 5(6) 5(7) 4(8) 5(9) 5(10) 4(11) 5(12) 5(13) 4(14) 5(15)\r\n 5(0) 4(1) 5(2) 5(3) 5(4) 4(5) 5(6) 5(7) 4(8) 5(9) 5(10) 5(11) 4(12) 5(13) 5(14) 4(15)\r\n 5(0) 5(1) 5(2) 4(3) 5(4) 5(5) 4(6) 5(7) 4(8) 5(9) 5(10) 4(11) 5(12) 5(13) 4(14) 5(15)\r\n 5(0) 5(1) 4(2) 5(3) 5(4) 4(5) 5(6) 5(7) 4(8) 5(9) 4(10) 5(11) 5(12) 5(13) 4(14) 5(15)\r\n 5(0) 4(1) 5(2) 5(3) 5(4) 4(5) 5(6) 5(7) 5(8) 4(9) 5(10) 5(11) 4(12) 5(13) 5(14) 4(15)\r\n 5(0) 5(1) 4(2) 5(3) 5(4) 5(5) 4(6) 5(7) 5(8) 4(9) 5(10) 5(11) 4(12) 5(13) 5(14) 5(15)\r\n 4(0) 5(1) 5(2) 5(3) 4(4) 5(5) 4(6) 5(7) 5(8) 4(9) 5(10) 5(11) 5(12) 4(13) 5(14) 5(15)\r\n 5(0) 4(1) 5(2) 5(3) 4(4) 5(5) 5(6) 4(7) 5(8) 5(9) 4(10) 5(11) 5(12) 4(13) 5(14) 5(15)\r\n 4(0) 5(1) 5(2) 5(3) 4(4) 5(5) 5(6) 4(7) 5(8) 5(9) 5(10) 5(11) 5(12) 5(13) 5(14) 5(15)\r\n 5(0) 6(1) 5(2) 5(3) 5(4) 5(5) 5(6) 4(7) 6(8) 5(9) 5(10) 5(11) 5(12) 5(13) 5(14) 5(15)\r\n 6(0) 4(1) 5(2) 5(3) 6(4) 5(5) 4(6) 5(7) 5(8) 4(9) 5(10) 5(11) 4(12) 5(13) 5(14) 5(15)\r\n 4(0) 5(1) 5(2) 4(3) 5(4) 5(5) 4(6) 5(7) 5(8) 4(9) 5(10) 5(11) 4(12) 5(13) 5(14) 4(15)\r\n 5(0) 4(1) 5(2) 5(3) 4(4) 5(5) 5(6) 4(7) 5(8) 5(9) 4(10) 5(11) 5(12) 4(13) 5(14) 5(15)\r\n 4(0) 5(1) 5(2) 4(3) 5(4) 5(5) 5(6) 4(7) 5(8) 5(9) 4(10) 5(11) 4(12) 5(13) 5(14) 5(15)\r\n 4(0) 5(1) 5(2) 4(3) 5(4) 5(5) 4(6) 5(7) 5(8) 5(9) 4(10) 5(11) 5(12) 4(13) 5(14) 5(15)\r\n 4(0) 5(1) 4(2) 5(3) 5(4) 4(5) 5(6) 5(7) 5(8) 4(9) 5(10) 5(11) 4(12) 5(13) 5(14) 4(15)\r\n 5(0) 5(1) 4(2) 5(3) 5(4) 4(5) 5(6) 5(7) 5(8) 5(9) 4(10) 5(11) 5(12) 4(13) 5(14) 4(15)\r\n...<\/pre>\n<p>Edit: viel\u00e4 tilastotietoa genbytes():in tulostamasta merkkijonosta ja tilastot luovat ohjelmat: (puskurin koko on 2500 merkki\u00e4, kuten FIPS-120 suosittelee (osa testeist\u00e4 on laadittu n\u00e4iden satunnaisuus testien mukaan))<\/p>\n<pre>monobit ones: 9994 zeroes 10006, total: 20000\r\npoker2:\u00a0 data:\u00a0 0:2505 1:2485 2:2499 3:2511\r\npoker2: total: 10000, lowest: 2485, highest: 2511\r\npoker4:\u00a0 data:\u00a0 0:327 1:315 2:280 3:309 4:283 5:287 6:345 7:319 8:339 9:311 10:305 11:287 12:325 13:338 14:327 15:303\r\npoker4: total: 5000, lowest: 280, highest: 345\r\nruns: stat:\u00a0\u00a0\u00a0 1:2500 2:1250 3:625 4:312 5:156 6:78 7:39 8:19 9:9 10:4 11:2 12:1 13:0 14:0 15:0\r\nruns: zeroes:\u00a0 1:2448 2:1227 3:611 4:336 5:158 6:75 7:47 8:22 9:5 10:10 11:0 12:1 13:1\r\nruns: ones:\u00a0\u00a0\u00a0 1:2410 2:1280 3:615 4:319 5:164 6:76 7:33 8:23 9:13 10:2 11:2 12:2 13:2 14:0 15:1\r\nruns: total:\u00a0 20000\r\nruns8: any:\u00a0 1:2482 2:9\r\nruns8: total:\u00a0 2500<\/pre>\n<p>N\u00e4m\u00e4 tilastoluvut kertovat t\u00e4ss\u00e4 tapauksessa l\u00e4hinn\u00e4 satunnaisbittien ker\u00e4ilyn ja sekoittamisen laadusta. Kokeile tulostaa tilastot siten ett\u00e4 genbytes():in kellona k\u00e4ytet\u00e4\u00e4n vuorotellen lukuja 1-255, kun numerosarja loppuu se aloitetaan taas alusta. Sekin saa varsin hyv\u00e4t tilastoluvut (ilmeisesti, en kokeillut&#8230;). Jos kellon alimmassa bitiss\u00e4 on riitt\u00e4v\u00e4sti nollia ja ykk\u00f6si\u00e4, se saa hyv\u00e4n arvosanan. Edellisess\u00e4 joka toinen alin bitti on nolla, ja joka toinen 1. Jos teit itsellesi viritetyn kellon, voit jatkaa kokeiluja toistamalla numerot kahteen kertaan ja kolmeen kertaan, ja siit\u00e4 p\u00e4\u00e4set mukavasti kehitt\u00e4m\u00e4\u00e4n kellon arvaamista. Onkohan se niin, ett\u00e4 jokaisessa kellon arvon vaihdoksessa on 1 bitti satunnaisuutta? (Jos kello ei ole s\u00e4\u00e4nn\u00f6llinen sarja)<\/p>\n<p>Monobit alkuinen rivi laskee puskurin nollat ja ykk\u00f6set. Nollia ja ykk\u00f6si\u00e4 pit\u00e4isi olla tilastollisesti yht\u00e4 paljon.<\/p>\n<pre>int monobit_zeroes = 0, monobit_ones = 0;\r\n\r\nreset_monobit()\r\n{\r\n\u00a0 monobit_zeroes = 0;\r\n\u00a0 monobit_ones = 0;\r\n}\r\n\r\ntest_monobit(int size, unsigned char *buffer)\r\n{\r\n\u00a0 int c,d,zeroes,ones;\r\n\r\n\u00a0 for(c=0;c&lt;size;c++) {\r\n\u00a0\u00a0\u00a0 for(d=0;d&lt;8;d++) {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 if((buffer[c]&gt;&gt;d)&amp;1)\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 monobit_ones++;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 else\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 monobit_zeroes++;\r\n\u00a0\u00a0\u00a0 }\r\n\u00a0 }\r\n}\r\n\r\nresults_monobit()\r\n{\r\n\u00a0 message(\"monobit ones: %d zeroes %d, total: %d\",monobit_zeroes,monobit_ones,monobit_zeroes+monobit_ones);\r\n}<\/pre>\n<p>Poker2 testi jakaa puskurin 2 bitin lukuihin, ja tulostaa n\u00e4iden lukum\u00e4\u00e4r\u00e4t. (nelj\u00e4 lukua)<\/p>\n<pre>int poker2_i[4];\r\n\r\nreset_poker2()\r\n{\r\n\u00a0 int c;\r\n\r\n\u00a0 for(c=0;c&lt;4;c++) {\r\n\u00a0\u00a0\u00a0 poker2_i[c]=0;\r\n\u00a0 }\r\n}\r\n\r\ntest_poker2(int size, unsigned char *buffer)\r\n{\r\n\u00a0 int c;\r\n\r\n\u00a0 for(c=0;c&lt;size;c++) {\r\n\u00a0\u00a0\u00a0 poker2_i[(buffer[c]&gt;&gt;6)&amp;0x03]++;\r\n\u00a0\u00a0\u00a0 poker2_i[(buffer[c]&gt;&gt;4)&amp;0x03]++;\r\n\u00a0\u00a0\u00a0 poker2_i[(buffer[c]&gt;&gt;2)&amp;0x03]++;\r\n\u00a0\u00a0\u00a0 poker2_i[buffer[c]&amp;0x03]++;\r\n\u00a0 }\r\n}\r\n\r\nresults_poker2()\r\n{\r\n\u00a0 int c,total,lowest,highest;\r\n\u00a0 char tmp[32],buffer[1024];\r\n\r\n\u00a0 total=0;\r\n\u00a0 lowest=999999999;\r\n\u00a0 highest=0;\r\n\u00a0 *buffer='\\0';\r\n\u00a0 for(c=0;c&lt;4;c++) {\r\n\u00a0\u00a0\u00a0 sprintf(tmp,\" %d:%d\",c,poker2_i[c]);\r\n\u00a0\u00a0\u00a0 strcat(buffer,tmp);\r\n\r\n\u00a0\u00a0\u00a0 total+=poker2_i[c];\r\n\u00a0\u00a0\u00a0 if(lowest&gt;poker2_i[c])\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 lowest=poker2_i[c];\r\n\u00a0\u00a0\u00a0 if(highest&lt;poker2_i[c])\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 highest=poker2_i[c];\r\n  }\r\n\u00a0 message(\"poker2:\u00a0 data: %s\",buffer);\r\n\u00a0 message(\"poker2: total: %d, lowest: %d, highest: %d\",total,lowest,highest);\r\n}<\/pre>\n<p>Poker 4 jakaa puskurin 4 bitin lukuihin ja laskee niiden lukum\u00e4\u00e4r\u00e4n. Poker4 ei mielest\u00e4niei ollut FIPS:iss\u00e4.<\/p>\n<pre>int poker4_i[16];\r\n\r\nreset_poker4()\r\n{\r\n\u00a0 int c;\r\n\r\n\u00a0 for(c=0;c&lt;16;c++) {\r\n\u00a0\u00a0\u00a0 poker4_i[c]=0;\r\n\u00a0 }\r\n}\r\n\r\n\r\ntest_poker4(int size, unsigned char *buffer)\r\n{\r\n\u00a0 int c;\r\n\r\n\u00a0 for(c=0;c&lt;size;c++) {\r\n\u00a0\u00a0\u00a0 poker4_i[(buffer[c]&gt;&gt;4)&amp;0x0f]++;\r\n\u00a0\u00a0\u00a0 poker4_i[buffer[c]&amp;0x0f]++;\r\n\u00a0 }\r\n}\r\n\r\nresults_poker4()\r\n{\r\n\u00a0 int c, total, lowest, highest;\r\n\u00a0 char tmp[32],buffer[1024];\r\n\r\n\u00a0 total=0;\r\n\u00a0 lowest=999999999;\r\n\u00a0 highest=0;\r\n\u00a0 *buffer='\\0';\r\n\u00a0 for(c=0;c&lt;16;c++) {\r\n\u00a0\u00a0\u00a0 sprintf(tmp,\" %d:%d\",c,poker4_i[c]);\r\n\u00a0\u00a0\u00a0 strcat(buffer,tmp);\r\n\u00a0\u00a0\u00a0 total+=poker4_i[c];\r\n\u00a0\u00a0\u00a0 if(lowest&gt;poker4_i[c])\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 lowest=poker4_i[c];\r\n\u00a0\u00a0\u00a0 if(highest&lt;poker4_i[c])\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 highest=poker4_i[c];\r\n\u00a0 }\r\n\u00a0 message(\"poker4:\u00a0 data: %s\",buffer);\r\n\u00a0 message(\"poker4: total: %d, lowest: %d, highest: %d\",total,lowest,highest);\r\n}<\/pre>\n<p>Seuraava testi on runs, ja se laskee per\u00e4kk\u00e4isten 0 ja 1 jonojen m\u00e4\u00e4r\u00e4n puskurissa.<\/p>\n<pre>#define RUNSMAX 50\r\n\r\nint runs_zero[RUNSMAX];\r\nint runs_ones[RUNSMAX];\r\n\r\nreset_runs()\r\n{\r\n\u00a0 int c;\r\n\r\n\u00a0 for(c=0;c&lt;RUNSMAX;c++) {\r\n\u00a0\u00a0\u00a0 runs_zero[c]=0;\r\n\u00a0\u00a0\u00a0 runs_ones[c]=0;\r\n\u00a0 }\r\n}\r\n\r\ntest_runs(int size, unsigned char *buffer)\r\n{\r\n\u00a0 int c,d,firstbit,count,total;\r\n\r\n\u00a0 firstbit=-1;\r\n\u00a0 count=0;\r\n\u00a0 for(c=0;c&lt;size;c++) {\r\n\u00a0\u00a0\u00a0 for(d=0;d&lt;8;d++) {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 if(firstbit==-1) {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 firstbit=buffer[c]&amp;1;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 count=1;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 } else {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 if(((buffer[c]&gt;&gt;d)&amp;1)==firstbit) {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 count++;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 } else {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 if(count&gt;=RUNSMAX)\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 count=RUNSMAX-1;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 if(count&lt;RUNSMAX) {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 if(firstbit==0)\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 runs_zero[count]++;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 else\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 runs_ones[count]++;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 firstbit=(buffer[c]&gt;&gt;d)&amp;1;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 count=1;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 }\r\n\u00a0\u00a0\u00a0 }\r\n\u00a0 }\r\n\u00a0 if(count&gt;=RUNSMAX)\r\n\u00a0\u00a0\u00a0 count=RUNSMAX-1;\r\n\u00a0 if(count&lt;RUNSMAX) {\r\n\u00a0\u00a0\u00a0 if(firstbit==0)\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 runs_zero[count]++;\r\n\u00a0\u00a0\u00a0 else\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 runs_ones[count]++;\r\n\u00a0 }\r\n}\r\n\r\nresults_runs(int size)\r\n{\r\n\u00a0 int c,d,total;\r\n\u00a0 char tmp[32],buffer[4096];\r\n\r\n\u00a0 total=0;\r\n\r\n\u00a0 *buffer='\\0';\r\n\u00a0 for(d=RUNSMAX-1;d&gt;0 &amp;&amp; runs_zero[d]==0 &amp;&amp; runs_ones[d]==0 ;d--);\r\n\u00a0 for(c=1;c&lt;=d;c++) {\r\n\u00a0\u00a0\u00a0 sprintf(tmp,\" %d:%d\",c,(int)(pow((double)0.5,c+2)*(size*8)));\r\n\u00a0\u00a0\u00a0 strcat(buffer,tmp);\r\n\u00a0 }\r\n\u00a0 message(\"runs: stat:\u00a0\u00a0 %s\",buffer);\r\n\r\n\u00a0 *buffer='\\0';\r\n\u00a0 for(d=RUNSMAX-1;d&gt;0 &amp;&amp; runs_zero[d]==0;d--);\r\n\u00a0 for(c=1;c&lt;=d;c++) {\r\n\u00a0\u00a0\u00a0 sprintf(tmp,\" %d:%d\",c,runs_zero[c]);\r\n\u00a0\u00a0\u00a0 strcat(buffer,tmp);\r\n\u00a0\u00a0\u00a0 total+=c*runs_zero[c];\r\n\u00a0 }\r\n\u00a0 message(\"runs: zeroes: %s\",buffer);\r\n\r\n\u00a0 *buffer='\\0';\r\n\u00a0 for(d=RUNSMAX-1;d&gt;0 &amp;&amp; runs_ones[d]==0;d--);\r\n\u00a0 for(c=1;c&lt;=d;c++) {\r\n\u00a0\u00a0\u00a0 sprintf(tmp,\" %d:%d\",c,runs_ones[c]);\r\n\u00a0\u00a0\u00a0 strcat(buffer,tmp);\r\n\u00a0\u00a0\u00a0 total+=c*runs_ones[c];\r\n\u00a0 }\r\n\u00a0 message(\"runs: ones:\u00a0\u00a0 %s\",buffer);\r\n\r\n\u00a0 message(\"runs: total:\u00a0 %d\",total);\r\n}<\/pre>\n<p>Seuraava testi on runs8, ja se laskee samaa lukua sis\u00e4lt\u00e4vien merkkijonojen m\u00e4\u00e4r\u00e4n puskurissa. (t\u00e4m\u00e4 ei ollut muistaakseni FIPS testeiss\u00e4). Runs8 testi on listattu aiemmin t\u00e4ss\u00e4 postissa.<\/p>\n<p>FIPS:iss\u00e4 n\u00e4iss\u00e4 testeiss\u00e4 oli hylk\u00e4\u00e4misehto, mutta en viel\u00e4 ole lis\u00e4nnyt sit\u00e4 n\u00e4ihin rutiineihin.<\/p>\n<p>Edit 20160120: Viel\u00e4 duplikaattien laskemiseen liittyv\u00e4 rutiini:<\/p>\n<p>Duplikaattien lasku:<\/p>\n<pre>$ sort test8_64_45_30.txt | uniq -cd<\/pre>\n<p>tai<\/p>\n<pre>$ sort test8_64_45_30.txt | uniq -d | wc -l<\/pre>\n<pre>test_timer8()\r\n{\r\n\u00a0 int c,e,f;\r\n\u00a0 unsigned char buffer[1024],filename[128];\r\n\u00a0 FILE *fp1;\r\n\u00a0 int alku,loppu,b;\r\n\u00a0 int testcount=16384;\r\n\u00a0 int testsize=64,dumpsize=30;\r\n\r\n\u00a0 for(;;) {\r\n\u00a0\u00a0\u00a0 for(b=45;b&lt;70;b+=5) {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 for(testsize=64;testsize&lt;=128;testsize+=64) {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 sprintf(filename,\"test8_%d_%d_%d.txt\",testsize,b,dumpsize);\r\n\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 fp1=fopen(filename,\"a\");\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 alku=(int)time(NULL);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 for(c=0;c&lt;testcount;c++) {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 memset(buffer,0,testsize);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 genbytes(testsize,buffer,b);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 for(e=0;e&lt;dumpsize;e++)\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 fprintf(fp1,\"%02x\",buffer[e]);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 fprintf(fp1,\"\\n\");\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 fflush(fp1);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 fclose(fp1);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 loppu=(int)time(NULL);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 fprintf(stdout,\"%d bytes per bit, %d testsize, %d total seconds, %f seconds per crypt\\n\",\r\n          b,testsize,loppu-alku,((double)((double)loppu-alku)\/testcount));\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 fflush(stdout);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 }\r\n\u00a0\u00a0\u00a0 }\r\n\u00a0 }\r\n}\r\n;<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Kirjoitin aiemmin postissa https:\/\/moijari.com\/?p=62 genbyte ja genbytes rutiineihin perustuvasta satunnaisbittigeneraattorista, joka tekee satunnaislukuja kellon perusteella. Satunnaislukugeneraattori perustuu vaihteluihin, joita tapahtuu luettaessa kelloa toistuvasti. (rutiinipari on oma keksint\u00f6ni) HUOM: T\u00e4t\u00e4 ei t\u00e4ll\u00e4 tiedolla kannata k\u00e4ytt\u00e4\u00e4 ainoana satunnaislukugeneraattoreina, vaan kannattaa aina summata useampia generaattoreita xor:aamalla tai tiivistefunktiolla. Tietysti on mukavaa, jos joku summattavista generaattoreista on omassa ohjelmassa&#8230;&hellip; <a class=\"more-link\" href=\"https:\/\/moijari.com\/?p=327\">Continue reading <span class=\"screen-reader-text\">Satunnaislukugeneraattorin uusi k\u00e4sittely<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[6],"tags":[],"_links":{"self":[{"href":"https:\/\/moijari.com\/index.php?rest_route=\/wp\/v2\/posts\/327"}],"collection":[{"href":"https:\/\/moijari.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/moijari.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/moijari.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/moijari.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=327"}],"version-history":[{"count":60,"href":"https:\/\/moijari.com\/index.php?rest_route=\/wp\/v2\/posts\/327\/revisions"}],"predecessor-version":[{"id":389,"href":"https:\/\/moijari.com\/index.php?rest_route=\/wp\/v2\/posts\/327\/revisions\/389"}],"wp:attachment":[{"href":"https:\/\/moijari.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=327"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/moijari.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=327"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/moijari.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=327"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}