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-08-26T13:27:54.390431+00:00
875c4576fc9cc1886c2099be830f23d9c6808a0caa30fd938bfcae915e215630
9e743a02c10b88d7648e3e29f8cd5273305855a7d2ca08f4bf2f709d152de834
a0920daa4eba942b170d24770658fa8ac3ae6e6caf5c52a558e7ee06eb9180b8
ef0d170006322d796b0ac931adf424bff789e7bf328127f29ed45d8ae4614b6d
60740cd558b670d6e2c9e1427dd7df718ad7da57c3aec531562a98f8c200790d
7c56cb1b307b7d04ceba7d114f0cc4351247a8f8139dace61eaee2db2d20ee8b
cc2c87d1bdeeb2cf67893c804c4cda6af836a3b8d28e35999c7f29b7be90290b
4b46d7ba39c55ae3b5dd401891a7bc7b667fe6e4714dd0b4f8abce4857b8726d
9da4dd4320598d493e492505e526240b73e969deeb4bcfd6c54ea01b000a7348
1f2bb1e48a391e130bd11225a21c6c848f3eeb438e0d005c5bf48eb462f7fb77
adc39df6bc201a89f6a41bc582c4ddbc3c985073099a2202bed60291701d7333
094fa39fea56f1560a96f2173febb12eec2cc511dec267b432f7fdee37ae4842
4ea8b0b6d3cc449a39dd3ef962df560429aecc3c1267e17e725e8bca4bfd3c3c
cf4ea83d288a804b3ceb3a3d534b027b2907121cf1279fd3c72134522fa9ae51
e0cc448398b9d50241648f7fbc08b4c5f4ba0a1f43ac5c252fa84d6b385da472
2af5160cf63d8ef5bb0f3c6e12254d837243703bc99d57121c3238adcd32a22f
d8a3c9c735f1e4693a868a10066c28839f20d20598289252e2913a583f1efd3b
89c1b3ac1aaec741ea0350b98cfc031b3b23cbe177e93b2319e948676485607e
3ee23915d4e07014f302dcdd0fcc93401765abc22dad68e6766fa6fc463df6be
f32c0cfa766b689c4afa2f57519f6044b4f0f71c7d35c31da31c8f6546bd82fe
21bb1bb5961719c3189538e962608dbbe4103e46f7f2729a59cf1e23795195b1
7b4efbcb5b31a4db81d7be02fb68cc291598ede974aebb69f203ec2ca125c912
c85f9c0c6690d0c75edab86cdc95c17ddccc1ed56d1a20e4d5f955865f2fd550
b5630c2e326f76888f0866c994b80e29a0d09e7d08edb93f4dc4d9828c785822
bac93bdfa80eb9aa2d1f23c13d561916d1560ccbe4660f473af3689b5cefec5f
34998634ce828e2730b0b6ecac758d977590bde3c36a715ed255588cd8c7546d
eb98c85af84dfea1590b270a2ab6c7da942e38002e4dc5b707d397f2be74fd71
438b744b32c3559d599af295728fbd10b02715dd258f808d7e0e2c9c4ac04fae
c699e0681b259a92e8283d1bc0289098b0c465e39bc2f018fc8f296f4e376785
a75331c848811164d754f46b41d1b023962adead1de67b015fddb4e0942b31d2
3de9ae8c0470c5ac247f724c002b51bc7336f9d3ff9875a476eddc78bc475eab
cd48a5667dd53862b63da98f87ec4d73e024ce7c81f87beb30f8a558728cffa6

From the PIN diode (hex format):

2026-08-26T13:23:19.789106+00:00
0eae7949edcb63e7625b526b52609effd2b34047c7b0dd2619ac5ceebbb02ba1
9c8a4e3097fa6a6bfb36c5020e92b7365d2fcd862420d09dce82d4683c8ba699
9ae3534c28afd7b975fc3714a2a429b6dc23483cf87ef38f3e72f09f766e94ad
24570b64f5b7fbfecccc10f70b979ccef3f256c32acde49a8b9fdfc7ad5ef9c2
8e47caeecaab087e269b7bb06d6903efe02ac7d3ee3bb5062ba25cd3d398cb18
eff591f5cc5602d9926a282e45f683342d11b208c22dd6b0a1d03aa7e1d62730
6a7558e92d13a6a5b5ac1e8ca36d914109ca94b2738b9c68392008dba0034fe0
8642cc10f1f912a1237bccb90cc21aa857735825aab9b8ad3702b0bea00da3c8
fb5f1900a71229eec8a84bc19b21d7d7c213dd9febc9782aafd2b07f1cc5d37d
5ddccb005a8db52a3090ba77d19b7fdef58289950688b5853bfeb46ab19ce835
8dd119ffd6caa20021d216a42b55707394f1ac48cbcab1c1294fbad64d4a8eb9
fbb5f4bb31a8807c521c86711adcdbac00355f69ec90974370a5a55882572b21
0521104f13fbe0537a93544e44164036cba57acef49e0cec1553c9aba79bd40d
315ff97b06e55c5597756222e9af338858dc8505b370c788fc12c3905e732648
0a006baefca8a46e2d1b01b760e7066670690837b2ae1434395bca94285f2c37
e839ad58dbd09658057e43c66b8554fd8e8ac148388d485ce273c40b7f1f9935
5d9ac6593ac560483b8627c5e6b0a3594a0ed3acee75cd16a7127e8ad26dd0ad
e5e4c151d64d31bff85e17009d52ba3e83be2ecff9dba4c763053e1436daf33b
143bc1dd4c03ead7d12ebc59bdc292d23ce18c1e8449445399c7f0719ebf4bd4
4a85916052667d6a1db5491c28dfb2fde4b508c36e6501c853e60aa31d4a9b3c
83b1e43658e50c6a4e0ade0a66384c45e28cb5fddf2981847cd05220cbb20d2f
aa895dbe4931bf06e1bf8eb1cb858d2a0a404150452c4470e02b5725c652d4ad
9fdf33bcfa38fb3dbc87e14e6d2534544b09a6cf8f7706fb8944579392e455ac
331e10a8a46b66152928c8fc057cd602884386d95732de83c5b29234010a00a3
f28ed4cf7b5b124c5502b7f8d71b2f4cd6a7f4ccf826f65592dc20c6284922f0
acca1d3a50926618ffe462f90082c5bc31a0db0cc125a347848a305cf6dbe451
b5263b361853fa142764eee372402fffa729c3e27fbd89114042cc12a4f6f852
1ec744963e001dbd77673e2182008f33a48ba8cacd61206a415a2c95a664f794
af8ed2ab94e02e75509efa778a7e53f673270c15d14ef8922de5a552a12c864e
b8f1c869288f2df83bcab451bd30a00d9b6165595e002f0dffe253aea1775b7a
3e1c41dc7dd5618a9236f4f2e3a83bcccb69a363cbb84f938819627e5a496aa0
5c4a63ae4e71b387d2fdd6b02ca73e1fd20a53763ca9817d181de5b9136ddb01

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-08-26T13:27:54.390431+00:00
35926918569336083253903115359828381270484739744594
33864858165802931136004262418215488885670891471257
21455260461370788648432313361906883895741008759282
65880645288413230006504521071049733691379150293958
93389775099616128882126625133887957497498642529400
21132486274823250486251779129653187168195772307445
32394435897803376028767606546384425353562741839044
41117570865797908164244567882302271377807172878414
09576467328941736273370538361115057597786027001015
72314377385730191118376228083243626742130092914280
98197395578832263764279730968860528015095434029002
45122915510979635986861050236377464497179403805055
74726678687682685457629886044174601803261494397560
60786861403828756058618375022341071828395999335282
47697481683152850265004327880880978610316772923747
68770756936414422212614287156010183777311467125957
87182850567350624763995305583438160608403159320552
40468245588863305937937972267499650380854003275935
19593525720300339626625721122002154764230171944573
04181166706190441218070456744787815996688028255395
29632843017089303387278150232595244956989641871662
70145489303521814977237891496429900204412152167487
05034461371895561202449994840849932530092632853495
47808199124650111836430802488414416058250885637796
30402088348659681485704531359361862522861202157158
04559295525334523042394876827217415117448995061394
85884099840952907761891139104282994846560046779783
07519016136739167550958557895449144389167639213743
28412614445674927974985304273754464061279240445276
96015594244341117855033367834972291700840765763550

From the PIN diode (digits):

2026-08-26T13:23:19.789106+00:00
14742173999891820782965879647199763825729287764361
56387848510607549702144683549347343632573004603966
53548376407585175520626441823572602643621459181048
73368711008316115156869542543959997394944271710826
38552376090503429959810643629252244586024606404669
31524517780894457661586739480617884519666581723040
63094565094878153956045732086003793466161861352385
12942668871588377085847355027690601363952500671841
68759355339419592042757627289725930090418142484486
19552730374906368133598006775653412562003322644385
12154872727793417986777442858187496828248228341326
72005395054451671265658830874333053316791983224784
78682264546522581221837167551349952306928551179834
75513688330579129936189544941538721000077468641045
27018396060212050855787420525791484095445557738850
88052667980733844238937256417292159611273153539354
98895897967259343997766389741472172267182638097393
81774991942300578286623190466499990562205459205993
76034688898994466040303273688353991358917574334596
82022506298173284078810895100101831063297455603177
54881206781010025676694081412932248232781347703793
90734991069142773341421064658069446812438737988273
59518856618835780937528475096643190637688747468572
51301668640702214140052402366734875031977846520110
00634223911876850283274776673885463298407334722958
80460224980030978849601293376371323848928181385954
24832039001464476741952789371764661864823099685062
00298919036233300043516439689732066590444966004875
42714846178058193826831539122178464565826144347884
05404345598081894860135597018994004713837461199122

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 | patronage | Alnwlsn 2026