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-10-08T10:58:26.542070+00:00
8bbdbcfdd03175143b1804c586a1295834b0deb7818c392291926707878a3415
d9070d7a974ba627e872602eac61c8d295a158bee101fac11d43849c1a6935de
528112b04d821be1e46671998a060dd7f02914e7e551a8c76e5ac545fbaff016
ee955b146419c7ea021f2f5be9c5babf217eecc3bc449a41952d04fccc4ae838
fe2a9fb17bf68763bb34b01107e9dc6bb847b988452ca8fd3a7b03e7ddfd1cf1
e4a90f6d044c14fe21bd8ac238d0c659d4c77ae63b61acd67efbc0f13e9a2e33
79a974f80b3dc76a573868e374e57b8e2321e0e6bdb5c534a40ec761460a2eab
6ff2e0653df429e5d278277c0c6561ba49228083dee77b3abe9c6e276dc54ebe
2e6420a7b9846d0422836ea0f31b626c29294eded69b5c29eadc7ab774367471
b41be9a17baacb69eddd2ae4bb01c4fad6ac8be983bf80d3b00c0416f4011bc1
a175ecb55832a291594a0f89b332433c4a5f48c19e2cb139e355601c915f6b3d
9926ee752016ea16f2e9199966b60db79127548fec8e8fc69f310def3786bcf0
5d5678941234fbfe68bf5da8e326e018064cab54a9f867420772cd045a90520c
622a59f96c31a68fb7509bb4bffb184fe5d7ba90325def539254e8f25c241661
c22e588d3662b8f65fa13e2aadb8438cc23134afbd2d7ab96f7122709441036b
13d558e42c6b131ca0a8c3fd2974f9017f576c6d724b2f75ceb444c64ce3d2a9
8eb3aba33a3fe43bcdf816de9918223050d00f303d611e91c98adc90566f4b60
f8bbdc87cc481ea161aa0b82406ea3b06a34799fcf568b0f3f6ab8e31742a555
186bbff28522e96cc619ca415864b10fd08a0fe754741e060554b32d1069ee29
3a6a89730c5a187b862ca351d7822cb291af7242a3f634db803d13a6093be244
29286e0ca336fafdad2a12ac6fe6d0467c2d709e8cd8da90347233214dfaf317
519c2f979671d997c77fe314f49f1c618ab8a5461ca45b1ead320d352ed0089b
c1f5af9ba2d208d522532026a643fd51737da23a61e98c2f9c5d009273b10d25
52d1ee3abefb0f6b842a59aaa1dbcfb9aaf76468c9976dfed2f0ccc0846e9a7a
181a3043bb0ad6744054c6b1ac0516735fd8d2c9be9fd7bbb9b8558b9565dc5c
aed77168e4417e6369c95efc7e905ab012a78f32b663dcdebc3f256e6bed6eff
7aa1a7d4aeb29f0868e31144e18e8a4489ff068992c3b442bd558e66ed6f461c
a0e951dbe6ada564c2d8c24c9e31c38f9d5fa16a584ff087bb431d04ef4a5087
4a0c05f4b297b37fe8281551e8ecf5c0eb7bc40fe02908b46aee55bd6f1909f1
7a81216a833d1e2c5ae9616bed8dc81027b506e6ec42ace00701e2a660a4e63a
5d558953609172bd294b9713871b01d9d871b07bde17a081ba9fc9c527045afc
26229bc02394462c19614dcf35c637fb3fe25f4c446b9e98db11718a474de474

From the PIN diode (hex format):

2026-10-08T10:58:07.742938+00:00
3f9815ea140f6bd5f433a86eef1225ec68a61d4da646a83ed1f3657ec93f3f80
9a557959e667d4e1c4ec0126e3de9621a63241dc028f3e2ece624a78d07d5a38
25425eabcf48d69dd0006302ebd80f3391b00ebb40170568fd92cfe217f1f493
0c596293c5eac4b268047dac379ae938d3e7ce0f7d49e7015c65aa575cb21b97
71df77f848f82cc13fe33be048a71624622d5079a30f6f07ffabf8d32560c016
7a7685982ad0d2426c90ceccd0e7753786ee9ac108a5d6e3f219598823a572b5
e2b714caf18a23720cfe7fa21dcbf45fd5f666cf6983fbf6bf0ed6344af15735
d8ba600b9e4415213d90daef53a900ececf81ba7d7998d371b203f5ecee6cfc5
e22c7cae4a56eeffdc1188adeeee5886552fa724fe8a9e508f8fbbcdcfc75fca
b75b644d462f640ca2e3c6c529971c422f77e30451d28a695d52cde438e0fc5b
4add50e26bc312a8615e8c270755bad2b961b70b4cb208296bff8e6ba202402f
40c49d5188481b36e947d3c7b7c736c6651076b568954e9ba1142d258be02299
675154ab1efa771584b6a296d5c2728e99380de2bab39543d874b134ebfa926c
36b4e306b0c8b5116701edafec8a7508cf7a7194f21192bc55c4f2312b7261a5
af2716fd55b21b7479d1264f2a75715c2cc05b74a6f3c60f527b4dbfd641bac9
8a800a4677561428e7edcd5afeaad2fb1f4a12623a6d77224b004c5bc113f24c
f2ec6409211c1c01bb1e8eb1225e0d8f9356d9b2a6766d0ac25dd85353f82c08
b313c489ff7eb0140da6301dabf03310eb5559882294f31eed225c841e4674af
ea414390502a7e1c261c8056e6a991939fd3d81bd76ca691987dfe4443308799
fe365e52fcb2e009306cd04f574a09478addfa161459c0e7a5b253ad2399b24a
4e61827d65300838cf69a420c6b326281256e5b46060644e6b2b245d10591ccc
7006c1efd20fed136c3212ed6c6ee09ba7bb05d10d14ad325d551d871fb2f4e6
afb1408df66b6d8e4e1c0da96dd4b6eb06854b109c29ffffe16454bbffcd21b8
af60a71d6465933c2565f8d337ad1ae94faa6528430399ec300d4c70476e2f39
71fc8e03fa26396ab9d249359b37da7b399f8b7ed12969ee369a6d83784fdbfc
6c2b8c9153366ab3607d1eb81d52ad6486da33a0261edc867ebf3bc39624aab0
799067c64c5df4e6ffe5b8718c09fee38c29f5a1c65908d52a41ce60d12d87b5
0f03bd8b8fbc91e9b80aead94ba9011eeb5568d3a9d573c4c93c337dc40e32e8
8625f1e959026b167f73f60e4ba6467c3290ef3cb7c71a1161ae7e4793b231a9
858cc268a49688e2c0f147502af0bc81fa4f027ca1ec80b1ec3623ef83f022b7
dbf8f8d8967be65280d8d1ffba700ce9ba2166cd309e66533a361d4ab0700974
7f5b9830346c0e85e3ff5fa05b62d8dc1ca5951a253720327c477a41da6e04f1

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-10-08T10:58:26.542070+00:00
39898849172059240497346141885276832940573445460307
35385221071322517566391496467297496188900193296732
56260553822918767730270213533806134120816899109097
69752249912000259902314791978691332695886854654945
04745642597723359987527617070784718536694468582303
28691509047620338938945698899922599772269262544651
21691611619906875604162342353389819752641499977010
46711101614120392412019786733428312358905610390997
78904600326785320904343110602798084141785592412283
16541613802761237005428701967239319128761204220127
93611781885062458974153779506760749572935844775785
96284595076153381732222225530282138345398443424398
59491355348893862048185204919368382406767184690366
07140490448212984289084966438380558091247986445093
83468492362297944688415498849561624273846740944952
75894522851113341248650307198844071928606895411601
27870809147547178068987669427971635863592253243448
80154861973045384486117596873572306197701130641063
76065221598639156306842366658524079133340898256588
00771538158416300605847945160541580637151290242334
44638130447845751466635228611966095968414010126354
73421872117024451258404452145133772381564751501351
99272059289738846570286491307350135346085593755562
08348332386667811525625897404756930046157713378258
90150732428970618570000451099232105422242648678710
16648498777205221595905987858485394901927413046526
99059426449076186743508299886337100710226167747859
08041768423868370637469580668985420211702860817365
00949476584995435795610688793587672904748035741205
78517927402181922396154108800685891125092229330631

From the PIN diode (digits):

2026-10-08T10:58:07.742938+00:00
63522120150751681018370466297766706862012663632854
85218903960138503366506502436246987420259056376694
71725700990215514576148764230504462347128998479796
78040425725554561525730192017087927827511319724493
63597267223698458021631511077137969222221833524266
08441755345493086525893635651481832038351412276229
95020531911452748753869611586821336144836900276753
41552732639497442474748617367388348547673638588043
43879995839100777047001262989741512866471904813805
93825691748007951868979440390785868597831176780841
07420762026447649657813672275471998399549801161881
04497855612045373934530381847130192132826250941442
53561386794967167752460854800676811703017538170822
13481746888596494314976575392285782716213879421713
92449291166698158223779165863828107019862040907031
74189858091934750076919319760009332828018730427734
94134347867866180910949383834408791996372676201366
48297151168589363448303492323070167565674480422628
38282886694547592708664552256867483553549482780948
08798774097138222089926578837335537874789730250148
08560564329879384018868096960078074336931689281206
93151908501808105567870513207350938529353178757764
41070942782813690982063375165641008487338475966729
00014760370155732679700140670353481376127110475713
42033857068573535555235759392641055454093120790843
40458354067996253084298273003451603830342691599550
36707621440398769384134009404161988908426596453581
15038939438845841075690130850469159660512596145034
37890207222715147566702450446083992617977426714778
49693340940464503692718042882979022461287754353134

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