The Random Page

2023-05-27 | [radiclock]
next: Atomic Clock

lol so random

As part of my atomic clock project I also produce random numbers (why not). Radioactive decay is a well known method to generate true randomness because no one can predict which or when an atom will decay. This technique was used for years in the famous HotBits project which is sadly shut down as of 2023. I have a radioactive sample of my own, but, there's a ways to go from a Geiger counter to a number. How does this work?

  1. Radiation from my sample of pitchblende gets detected by one of my radiation sensors. These are the "clicks" you hear from a geiger counter.
  2. There is a timer running all the time. When a pulse from the sensor comes in, take the timestamp of it. If you want to slow down the rate, you can take the time every nth pulse instead. Whatever the setup, do this until you have 4 timestamps.
  3. Do a quick check to make sure the timestamps are in order (in case the timer overflowed)
  4. Take the 4 timestamps, and generate 2 intervals:
  5. If interval0 > interval1, that's a 0. If interval1 > interval0, that's a 1. If the 2 are equal, throw out the sample and try again.

I actually have 2 sensors; one is a classic Geiger–Müller tube, and the other is PIN-diode based. I collect random numbers from each. I didn't know quite what to do with the numbers I collected, so I figured I would publish them live.

The 2 detectors are set up to generate random bits at around the same rate - about 32 bytes every 55 seconds. The full 1024 byte frames shown and linked below will update about once every half hour. Therefore, please do not spam us with requests. Also, be sure to check the ISO 8601 timestamp at the start of each file, and make sure it's somewhat close to the current time. If it isn't, the project is either broken, or you are getting a cached copy (check your browser).

Also, a most important note: the data listed here is published globally, not individually, like HotBits or random.org. In other words, it is not unique to you. I highly recommend you do not use this for security purposes as it it possible another party may have a copy of the data.

From the GM tube (hex format):

2026-03-27T10:15:59.599630+00:00
64aecc41c3928729225482a38215d16251b6cce3ca8fca5fcca7000b52ac5f1d
ab01af996fb6e201d5ff51ecdb1456402efcc6e1221aad910efef2904500600e
0afbe83daaaf6b650cd49ad6b53ef168e2812aa8e4036268d7dae70ae5904343
84d5053f32cb23d6e5420ecb72788bdb26533e56f5e57ecfd1ab64e612cc4b51
de4c9eccc5d8da646ebb2c5e6d0f1fede24106b62fbec17e9f4421fe553833b9
78df4052228899d48f5bfe8bf3cccfe56d6b57213f2d9df051ca19846bad0e3b
505509458526600bef9c7edcb1380440cd218a414028a2718f6637e0130d1645
b13845d89eb45813697fc5c84d8f2f8927de98838e007d52299f520d757aeac3
e7beeba6dc8cc4b268557450b03ec6983686c1dc681a1ff7ac7eb9113fcb6f58
0bd4baada4df51b352ad2cdc0c67fa831d6de7484bc3f318ce3e293254dc5d96
3e0f72f7e537319d4321f83667e16a7ca1fdb174c56879526ee777ee3d47e387
1006b0ddd60bfe915861ead6cec44271aa7df649b17319d6130e9691c92ac6db
2eeb645d207f8834d05525bddb2db718b5c246ade90aad5986f2d27e7c609e03
72be590ad61dc20eabfeaa0e69e9f21c0a7c893632e73df2c933edb665c3eaf3
f55a85cba47ea92397123ae30fc2b26ff7e3bc99e05d2eea33a85efb7c89c0b7
65a4e77f425e1282f2ecb10a408b7e65cfb641c297f30483aa53952e78117324
66a730e419921044a9bc29be147911c46e4641cdbab6daa0daf9a692328082c8
15c2ef680d0526d101c6f4cb3ad7518ce191b3f614442eeec0b9dd6234d41765
c3d111ea55f2e58aef36ed381b709b224625592aaed88ade9fe066c3dd6bbbeb
b97d67d6a2bc6aa8f91d00371ac9905fff03bd1e050698bef21643e42a515dfd
c7d2aa958baf637744ef39e7289cbe01d311bca03ea81c114b6d01ad99459471
36254962dc22ce7fcf92989da9904a26f9474aacdcc7f7de2c75717f91eb7126
45820d809876e48284d9baac58cb0f80b6c26b3d0f4e91645c0ee05c057d5dab
80bbe44a174a1591a5874d34988a83c23d64296f67caae5950afcb887f5ea8ec
95a4a25cd8600e69a139f5a05b29cbad90538b9a6cab73f98cf0a10c4ced0f51
caf9cd286d2f38ef937c881af6103786be71f3ece2f468d9df90e0c49386d5b6
2664b03117222fdd5e460641b987484d7e902fa648306dd68c45afd4cc553ab8
edfd250fbb1f9e52c2154c1b9939fb6bfcdef3a2050ca43f0dcaf7039faa0f57
6ab9cd84bf1d7e0bf82a4ff4d47edcba1b17a18192f3c784777ddb25bda44be6
2aacf4bfd38f9299c472b79e730366f2ef1b2afdfb709c0c61de590a7e0e53fc
934687882597140bd67152158569c5a8be91d16b8b94e1e0781f55f5bcf09bfa
e2fa7d94a23eeac7c3dd9ac9be94e09ca3378f375c47bc5f2f6e79ee5ef6dc29

From the PIN diode (hex format):

2026-03-27T10:12:22.199820+00:00
ecd4d2504f7beb7ea4f9f23eb5ec4279383d3e42d3e2ea64c19f97eebec507eb
41cb9eeddd5f13fbe5238d5855d753575573049aeae9d7267205d5f7a746abf9
3b8072454e6cbb3c4db9d9a76ae52624b168408037ebc2c01f873c6075fdd2d5
3c8bec2a8ec98a9b127d62da328f206139de0237af79ff2400b4323953bf3bd1
034a3d04f048a4d076af64d91dcf534cfd91fb698479736b228164afe4d8a30a
c40ccfaa2e32f674787e625a7a32bcc9790b2d65338846bd133d2a424c0ed07a
72503b2da7b269c4efb03b50ee2790502fb641e479ebb7b9444bac89a7a6e002
248d6157faebd93600663d65bb8b502d84393d54eb88bef244ee4faa157356ad
5d74beab8b3847b4816dfd47bc2bc1626aa8095cce9228ccd261e7da8465327c
e2fd47c7dddcdd87b6bc9b230e6f57e77d6bf1f4277984ad66f114987b4c5de1
0180a65abe0e3358a26b2f96553da447398b41330d85be24246925bac5050d63
2d2c3d9f8f633daca053af048f92161b7c13cad3086e17a2ba02395dfc66e57b
b0545ea5f0757b5b249ddf3deba8ee3de8ea0b2bea09bac65bd3277ff188fa1b
edbfadcaf93505d561b4e2654e01a9e8a85ca73f385e7f59a5d1dff232a307c3
d9c0cc32262617278b09689c498e264e3b93847705347ac49c613a9a8d970413
b637131f971a560cc887298eaa22ac3fca003dad78869ce34535be2a07d3cda0
9239f1f6692f32f3cfa833b552d5ef7d8f64e3f1cfce3980c95012ffc321152c
d83104b6df0492de52d3b87edd1af50abc6c1bff70cb2534a36305b2a8889a71
3364f9d4f312bba76fb5993677058b0ef0499bf6f0bb2c97b9f7b376739cc5f6
47bebb6001189d588267abe6392ee605dc17b7c5ddb0ffb10fec04d5c43f41bf
6c28c998480719eac721573b18f7e7cfb4d06b4c3af612234cefd930fedb5a11
63eb56ed75f48c55b154d8ea6df3b861689b6d1d16b76d904bb2572361af0d3a
4130e9f9c1693126de2ec3ec448ee31e15ba46e1f405da59e680e70682627897
b695b31f9982e7d9780bb38878af5cf7d3350731906aa64ac7ac5939d60b474c
83cd09d4e9012ef403ca725b4827a35a454104cb740863ee5ed4f82decbabfa9
2340be7daf0b720effec18f72e090a4225b5737fe49f5953f2bb71b6587856d0
9cc6a6b0f681d517ad472bf3b11c1c0c44c6e91c042e1a6a6c130d65ae13d7b5
54f62ac57614f761da05ba54a49f30dbc844d2c1b741bf87e661dc391c3760c5
37657702ecb15ed262bca15cdec46dbd5fcf1eef8350853f566dc9d2d1161148
7c0a7044a849c27aef54ad231f82a16215c814db5d43b057b291ce4ad0e345b4
6090fbafd98f3708fabcbaf722796d3f5e1b625d17ac34dd452da0b263e39a3c
b73af2204847ddd716977891c34ce176deb800291925028cef6bbc9f81c10189

Ok, so you want decimal digits instead? I've come up with this technique:

  1. Look at each byte. It's a number from 0-255. Throw out any samples greater than 199, and we now have a range from 0-199
  2. Convert those samples to a 3 digit string, then throw away the first digit. Now, we have random numbers from 0-99
  3. Concat those strings into a really long string. Now, we have a sequence of random digits. But, the string can vary in length.
  4. To deliver something with consistent length, I can just trim the string. But by how much? Since the probability of a skipped byte is 56/256, we would expect about 800 of 1024 bytes to be usable samples. There's a 50% chance there will be more than 800 good bytes. But, there's about a 99.99% chance there will more than 750 bytes. I still double check to make sure, but that's what I publish. Of course, that gives 1500 digits.

To determine where to make the cut, look up the binomial distribution probability. It's already built into spreadsheets as BINOM.DIST, which is what I used.

From the GM tube (digits):

2026-03-27T10:15:59.599630+00:00
00746595463541348430633021988182439567001182729529
71017553118201812086644698342673451444690096141061
70750701125481620429426803980410446767320563503566
14142039388362862671001875817658970010874494091531
65068247909326596833855651852064823436534391390907
87336345578125320773145980850969333896115626775604
64333865644062134302551913226977566958808819052797
77434737395231420025824159821317229590664096780485
16807662985254349304263172268517631188118673648179
82734412033129097275952462415084935062151455495767
33540306246177169704218210196171351606761145889796
66137025737715251914504542984600933227365285378945
83248194707310738934262496580314908910299414717014
05281024375450615182019590336426693551185815947811
88539346516894243792830164276694183077106439260182
65945104317083494620171536026748254616686988419020
21179610706586826066465028302194041305380198588140
45792068469285985223019517853854562712553470378942
74385902950787852503628806682900552644950389300506
52902267428193997049397599196857405690011788606268
28177509017353694813543773983427465257694474387174
72994417132745133869301328521830328672881528829407
61157845009214920525937128877423742145653577525238
31946100411103748980753627946849646292961405615760
91417344833954087115406112761581400947564724362616
55349013044496473482380076492334479470066585357277
26444766724809406975855884371587315882942176275357
07620512646313035970158706853291292611427926862723
61294699321925378964754272914346539614835815030227
42125612978910261483477035363751201113822133059768

From the PIN diode (digits):

2026-03-27T10:12:22.199820+00:00
80792326646281662156616266009359519097076558951935
41888583878515045438140567707159281469780887607785
67063836770464285594923135609617603942423855182598
50433297570255752136008050578391590374610472641875
00298376450532211507342900756310961270465016202698
90225088211145015136708919614266761422148059456778
05967659803944804782652183856875723767660236419787
54000261018739804532576184369068797021158673931690
71395671802909718843939806680992464097320150247199
35828855351411872507392132730220522376930128669090
14518862074750856164715739655113339036360537869705
13994544615943996172608375044346222724190810236286
02579302237684946517239136576168611143098698913927
36279173530597800178016968926763569427896550630795
92503838233939090456734238785947321905522296569758
54415104198255193151268612354142703472630061732034
56695390420760465705475068518182254300572880189533
21444904820446828426261088082712375263990578683654
13510018876711815354190539147355874451857918155697
71908796012457883003715746052383977677150496636591
08405272072599338759248007765818357648901799861740
85778409849704550929228309447578873597751358654893
05493846956842302186700589280630982051824979315330
20117936207592530749440666749972895711717631090146
03149172396390696504160899944586916935649025751114
14244609106637811527598983871382882086569866762923
73714377282812689828044626060819130174198184429718
20970586846459486893836591359757285596975501190277
94988861929609899530318033638609221772241012686873
94228473353130619821209367768778457469809644754355

Or, perhaps you want just the raw bytes themselves. Just make sure to trim away the first 33 bytes which are the timestamp header:

Here is the python program I use to generate the reports above.

comments | support | Alnwlsn 2026