1print "Gathering array...\n" 2 3s = seed 4 5sum = 0 6 7for (i = 0; i < 100; ++i) { 8 a[i] = rand() 9 sum += a[i] 10 b[i] = irand(sum) 11} 12 13print "Testing implementation...\n" 14 15if (maxrand() >= 2^64 - 1) { 16 17 seed = 54.86785590782347282592869373784717814475564948862907968939359536927733440\ 18 901359008180088183692646452982444316148757934570312500000 19 20 ibase = G 21 obase = G 22 23 for (i = 0; i < 64; ++i) { 24 rand() 25 } 26 27 seed = 0.2890120 28 29 rand() 30 31 7B47F409 32 BA1D3330 33 83D2F293 34 BFA4784B 35 CBED606E 36 BFC6A3AD 37 812FFF6D 38 E61F305A 39 F9384B90 40 32DB86FE 41 1DC035F9 42 ED786826 43 3822441D 44 2BA113D7 45 1C5B818B 46 A233956A 47 84DA65E3 48 CED67292 49 B2C0FE06 50 91817130 51 52 55FE8917 53 47E92091 54 486AF299 55 B1E882BB 56 C261E845 57 1A9B90F6 58 7964E884 59 5F36D7A4 60 1EE2052D 61 8519F5D5 62 293D4E4F 63 6D8F99FC 64 C3421509 65 A06CD7C6 66 E43064D3 67 E20F9BF0 68 401B50B7 69 8EF1FF3E 70 E357E2B2 71 A4AEEE37 72 73 2AD4426A 74 9D11BE94 75 7290C556 76 6E6F3787 77 050C2EE3 78 4FD73703 79 C6FF478B 80 4B1CA1E1 81 1654EA91 82 CD08B2F2 83 F7FF3DA8 84 78B1B8DA 85 A100602C 86 9588585F 87 DA028873 88 66B4F376 89 0E6B4B9A 90 48167094 91 0D58CDA0 92 8F7238BE 93 94 F79983F3 95 07E5D324 96 AD78DF52 97 1532BA74 98 1E4899E2 99 6C75DF64 100 171DDC36 101 F2D8D74A 102 24E6D907 103 4780FD32 104 9ADF408C 105 A25544CF 106 EFC6A738 107 1AA23A54 108 C5A13EBB 109 F739EDC9 110 C3A015FA 111 3D5E1511 112 AFC4D7FB 113 3F413B5E 114 115 4660CB73 116 88FC773F 117 D6BED59C 118 63B3B54A 119 D67D3DDE 120 23394F8B 121 13384B44 122 DD8B3ABC 123 FF59A21E 124 3BB16D7E 125 6E01CB68 126 EC34790E 127 B26C42AD 128 D723C830 129 DFD10FCA 130 7E362AA1 131 826FF323 132 CB8F63B5 133 9B3227E5 134 9A61E339 135 136 40BDACF 137} 138else { 139 140 ibase = G 141 obase = G 142 143 86B1DA1D72062B68 144 1304AA46C9853D39 145 A3670E9E0DD50358 146 F9090E529A7DAE00 147 C85B9FD837996F2C 148 606121F8E3919196 149 7CE1C7FF478354BA 150 CBC4AC70E541310E 151 74BE71999EC37F2C 152 B81F9C99A934F1A7 153 120E9901A900C97F 154 0F983BAD4B19F493 155 5934619363660D96 156 D5A7FE2717A2014E 157 6E437241C9E6676E 158 6A75C9DD6329CD29 159 2D9E477683673437 160 51FB0CF3D4405437 161 217BB90392D08B20 162 47C528A018B07A82 163 164 1B4E474C418C835E 165 BDB2BDA74A119ED6 166 C6DB79D0B9E43493 167 C3CF4834E94A41D1 168 AB8312FC7877C7DC 169 094B108133E8B5EC 170 37CA97AC830113BD 171 EF02D7347F9192BF 172 959517DD9896C53A 173 7A80EB7629EFE9F9 174 AE53C23F2B1CF57C 175 CA605CD189F6D5CD 176 921C2704886A9622 177 B68C9FBF826AF7AA 178 73F8C733124772C3 179 6B57F7E459EFBCDF 180 9DE7696DDB6B8E18 181 02CA67560DC26877 182 A24E353080777DEC 183 4D600156763FD65C 184 185 5CDF9C7E26DD2C38 186 6A32443BBBB16774 187 3D8415FFECFB8B7F 188 3090ED9C475635A3 189 6DBF241361C3E652 190 2CA9EF5A2AD971FC 191 44FBE937A1CF0FFC 192 DB17CF0577CB7853 193 AA3747D98D31B24C 194 5D9A104C5D7F43F7 195 BAE65E3E293B2C7B 196 16A396F0DB4EF984 197 6DD2BACDC4445A05 198 7B7A13D1858E5CA8 199 F73722BCAA52447C 200 31A2C7BBE77CBA00 201 7FC8AF9003BA1ACE 202 5703F11DD3F235EF 203 FA1952267EF836C7 204 BBFA558C9E2D51E2 205 206 3A29661D8145AF36 207 608DEA6358DABD7C 208 9E34E9E53431B447 209 325A05E35EA524EB 210 63A87CCF0C80ABB1 211 8EA183287A46F292 212 E2AA5F119CBF2A08 213 2F3BEB0DE8B730C8 214 4B8006A928CF8F5B 215 57B8BA85069C201C 216 3422D962DDF59474 217 FD744940BA7366A1 218 23D24B06B5DA4F6F 219 AA187C608319D1DC 220 DC60CA6FEA738B8A 221 C9FC61DF96A769FE 222 82E2457708658A20 223 2BECEC9B3E7D93EC 224 1340DAEC04588952 225 F533446AD5C50B1D 226 227 31FD1C7F434A62CE 228 D16DAEDD1F281A39 229 6B5D9648931D7057 230 62FEE3392DBB06D5 231 0358BC87B00DF25A 232 F3C882D22946175D 233 65BA8F11B4516EFE 234 2DA5A96E626DA4FE 235 DCC669F4CD6121F0 236 7A47FAC054319CA2 237 9661CFEE277284C8 238 01E483A14F4EB23A 239 ADDC115507390607 240 5AB47C343BD3B0BD 241 4882FB3A3957B11F 242 615B7C9C3626DD44 243 F79CF49562969219 244 88C32C194EA78D27 245 DA8AFFE1353FF352 246 A7A3C331A64CB146 247 248 A1F53517A7BE0CAA 249 250 ibase = A 251 252 seed = 54.0950779151573258314404657465246373249101452529430389404296875000 253 254 ibase = G 255 256 for (i = 0; i < 64; ++i) { 257 rand() 258 } 259 260 seed = 0.2890120 261 262 rand() 263} 264 265print "Testing array...\n" 266 267ibase = A 268 269seed = s 270 271sum = 0 272 273for (i = 0; i < 100; ++i) { 274 a[i] == rand() 275 sum += a[i] 276 b[i] == irand(sum) 277} 278 279print "Exercising irand()...\n" 280 281scale = 256 282 283pow = (maxrand() + 1) ^ 4 284s = 2^256 + 2^128 + (irand(pow) / pow) 285seed = s 286seed < s 287 288s = -459.125 289seed = s 290seed == -s 291 292irand(0) 293irand(1) 294seed == -s 295irand(maxrand() + 1) <= maxrand() 296 297for (i = 0; i < 200; ++i) { 298 irand(20) < 20 299} 300 301seed = 738 302seed != 738 303 304s = 2398@0625 305seed = s 306seed != s 307 308pow = (maxrand() + 1) ^ 4 309s = 2^2560 + 2^128 + (irand(pow) / pow) 310seed = s 311seed < s 312 313b = 0 314m = maxrand() + 1 315n = m + 1 316 317for (i = 0; !b && i < 100; ++i) { 318 c = irand(n) 319 b = (c != 0 && c != m) 320 if (c >= n) print "irand() result is too large.\n" 321} 322 323b 324