Implementation
In 2017 Bernard Widynski published a paper suggesting a way to improve on the original
Middle Square Method. His solution was to incorporate a Weyl Sequence into the middle of the steps. This added two new variables,
w and
s, which resulted in a longer period and greatly increased randomness of the generator.
The variable
w acts as a counter, increasing each iteration by
s.
s itself is a constant; in Widynski's paper, it was given the value $B5AD4ECEDA1CE2A9, so that's what this study uses in its implementation.
This altered version of the Middle Square Method uses the following steps:
- Add s to the current value of w.
- Add w to the square of the current Seed.
- Pad the resulting number with 0s until it is n*2 digits long.
- Take the middle n digits. This is both the new Seed and the returned random number.
As before, we will use 4 as the value of
n. This limits the generator to a range of 0 to 9999, inclusive, but the addition of the Weyl Sequence will help prevent this generator from falling into a loop or returning as many repeated values.
Test Results
SEED | Number indicates how many results could be obtained before the generator fell into a loop. |
1138 | - | PASS |
65535 | - | PASS |
8675309 | - | PASS |
16777216 | - | PASS |
123456789 | - | PASS |
|
Adding a Weyl Sequence made this generator's output nice and evenly distributed. |
SEED | Minimum of 6,000 darts placed needed to pass. |
1138 | 3706 | FAIL |
65535 | 3690 | FAIL |
8675309 | 3708 | FAIL |
16777216 | 3676 | FAIL |
123456789 | 3732 | FAIL |
SEED | 70% or higher required to pass. |
1138 | 101% | PASS |
65535 | 101% | PASS |
8675309 | 101% | PASS |
16777216 | 101% | PASS |
123456789 | 101% | PASS |
|
As you can see, this is a huge improvement over the Middle Square Method. However, the stripes indicate that there's a clear pattern to the randomness, which means this generator fails the plot test. |
7941 | 4761 | 8317 | 5947 | 6064 | 4516 | 3960 | 8406 | 714 | 4270 | 6419 | 9134 | 468 | 4432 | 8879 | 6667 | 222 | 6892 | 2866 | 6421 |
4905 | 9351 | 2620 | 2918 | 7364 | 8818 | 2374 | 5377 | 8238 | 8572 | 3390 | 7836 | 4771 | 8327 | 5850 | 7037 | 4525 | 3863 | 8309 | 724 |
4279 | 6322 | 9231 | 478 | 4335 | 8781 | 6677 | 232 | 6794 | 2875 | 6431 | 4807 | 9254 | 2629 | 2821 | 7267 | 8828 | 2384 | 5280 | 7265 |
8582 | 3293 | 7739 | 4781 | 8336 | 5752 | 8010 | 4535 | 3765 | 8212 | 734 | 4289 | 6225 | 9328 | 488 | 4238 | 8684 | 6686 | 242 | 6697 |
2885 | 6441 | 4710 | 9156 | 2639 | 2723 | 7169 | 8838 | 2393 | 5183 | 6292 | 8592 | 3196 | 7642 | 4791 | 8346 | 5655 | 8983 | 4545 | 3668 |
8114 | 743 | 4299 | 6127 | 9425 | 497 | 4140 | 8587 | 6696 | 252 | 6600 | 2895 | 6450 | 4613 | 9059 | 2649 | 2626 | 7072 | 8848 | 2403 |
5085 | 5319 | 8602 | 3098 | 7545 | 4800 | 8356 | 5558 | 9956 | 4554 | 3571 | 8017 | 753 | 4309 | 6030 | 9523 | 507 | 4043 | 8489 | 6706 |
261 | 6502 | 2905 | 6460 | 4516 | 8962 | 2659 | 2529 | 6975 | 8857 | 2413 | 4988 | 4346 | 8611 | 3001 | 7447 | 4810 | 8365 | 5460 | 92 |
4564 | 3473 | 7920 | 763 | 4318 | 5933 | 9620 | 517 | 3946 | 8392 | 6716 | 271 | 6405 | 2914 | 6470 | 4418 | 8864 | 2668 | 2431 | 6878 |
8867 | 2422 | 4891 | 3373 | 8621 | 2904 | 7350 | 4820 | 8375 | 5363 | 190 | 4574 | 3376 | 7822 | 773 | 4328 | 5835 | 9717 | 527 | 3849 |
8295 | 6725 | 281 | 6308 | 2924 | 6479 | 4321 | 8767 | 2678 | 2334 | 6780 | 8877 | 2432 | 4793 | 2400 | 8631 | 2806 | 7253 | 4830 | 8385 |
5266 | 287 | 4584 | 3279 | 7725 | 782 | 4338 | 5738 | 9815 | 536 | 3751 | 8197 | 6735 | 290 | 6211 | 2934 | 6489 | 4224 | 8670 | 2688 |
2237 | 6683 | 8887 | 2442 | 4696 | 1427 | 8641 | 2709 | 7155 | 4839 | 8395 | 5168 | 384 | 4593 | 3182 | 7628 | 792 | 4347 | 5641 | 9912 |
546 | 3654 | 8100 | 6745 | 300 | 6113 | 2944 | 6499 | 4126 | 8573 | 2698 | 2139 | 6586 | 8896 | 2452 | 4599 | 454 | 8650 | 2612 | 7058 |
4849 | 8404 | 5071 | 482 | 4603 | 3084 | 7530 | 802 | 4357 | 5544 | 9 | 556 | 3557 | 8003 | 6755 | 310 | 6016 | 2953 | 6509 | 4029 |
8475 | 2707 | 2042 | 6488 | 8906 | 2461 | 4501 | 9481 | 8660 | 2515 | 6961 | 4859 | 8414 | 4974 | 579 | 4613 | 2987 | 7433 | 812 | 4367 |
5446 | 107 | 566 | 3459 | 7906 | 6764 | 320 | 5919 | 2963 | 6518 | 3932 | 8378 | 2717 | 1945 | 6391 | 8916 | 2471 | 4404 | 8508 | 8670 |
2417 | 6863 | 4868 | 8424 | 4877 | 676 | 4623 | 2890 | 7336 | 821 | 4377 | 5349 | 204 | 575 | 3362 | 7808 | 6774 | 329 | 5821 | 2973 |
6528 | 3834 | 8281 | 2727 | 1848 | 6294 | 8925 | 2481 | 4307 | 7535 | 8680 | 2320 | 6766 | 4878 | 8434 | 4779 | 774 | 4632 | 2792 | 7239 |
831 | 4386 | 5252 | 301 | 585 | 3265 | 7711 | 6784 | 339 | 5724 | 2982 | 6538 | 3737 | 8183 | 2736 | 1750 | 6196 | 8935 | 2491 | 4210 |