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-06-18T19:08:09.567478+00:00
c9308fb3a48406e88bf4bd79f063752268e69a5252570347788cc125519d6315
e9d5f4f3d368b2097f3520e9b573a0d74fdfae827f97d14ca12d7db2d13f1a54
0e8f396aec1f37b942d9b1767fcbbaba064a4ce65828469f3b6551ac8b62383e
f59ba01cd62e4b6c2bd6154ebcd44e388aee834d6c8098d60b432a58c055adf8
683ba4b91c1cc63243801521eef576b675d9fd14d67c2df7951440730609061b
884090f38d4390c2b745a15442f995a927dfc17be9a10e833bc86506e8323142
27fe02804f69251874a4b0523552999d81ac0bcd888d77e9596313bc9b1fea34
7450a70ca92fa75c805926fe7fcb2c3b427e511ff2802ef763e7a94d1e2b63de
7edacbfb3e9e7195c7e4ec7821601fb600f408965a05fd10b122936920cf206f
1f530f4e70b6c0daab5472631c1b29a6c317d06eaa596320b360b67cc97ec105
b43c0b955e8be79e1a78b9ecb50018b13d6c341b9e2e4173a9487bb2cff96a9e
3d866c6402587ad1ae0dbbc606c3a2090a18dbca9136c9a2c2097634544a6a00
f8d315aa18a3a05abc4bfb359880fdd4f8dcbc196ee634e4298bd5d27994600e
b4e4ca116cadec885cce4c3f8ef8ab77dc6c19e018cf25ad009377585d4159be
76af2653d9fa5ec198532ecb949da15d6b651e355f91816ffd21650201bf5e27
a0c0d5a4e7085850c18381256be6aacdc6d91237b298738caff778ea291220bd
dac22c667a1a55949b2d83482f00b15c469d908929b70a38129dd7d3286b866d
13aa2689c605a5812057c17dfe66939cd62f26a31cb942a03556a2fd070891e8
d1f90457560430f291b4565d233549ae380d0a353fd13eaa46c2491538322da3
97111314a1d5ebf0fc3ae761d753715b96094ede5c844754b57f737cbf4b24c5
f38ec160cebcfea5e4299724923a1c870c411a4ad5db747872c381a05dae8998
fcb5deb4789f59c528e7c037752ea74ed0f4306ab82b91a46f24bb9a520416be
61afcb518f7bf8af6ba748ea18fc815251c852f6ab6aac247d163894e9c376ae
1e3041b985f5fa7c3293cc4b297cb65324e29f78bd7c43a4971942b34973bd1f
04418439fb873434f6df51a48d02791f6f5b519e3ea365a0dafde18eed2ca1b9
505f19d20d77e75cd04d2eb3b7421ae8986fa22e5490e1604cd26ecc46ef937d
f8e6d96f667cd811ac3adf9ee7229a004b0f17893e9e7adfaf276dc7342a6983
ca2fbb68fee549c105dc79b5a4a6a81b83cb55d9a7ba72c280811c10524ad7d6
dd567476c5b51b6c50c2165b7b3e2c5bae7c4ea7e5bda9ba48bfe4e084672d46
b16efd0a90871ce629140d9b4db741265dd94d50991d58cd5f46f78d0e150028
c53a3ebdec795ceeabb04529cc0aadb559873574f8256d43202c47b914118ca3
a3a251875d87b7a74dd6cf2aa88011999a8bdb60c4306093d387ae237419517a

From the PIN diode (hex format):

2026-06-18T18:58:58.365765+00:00
d3e2c91693c84e73cc0d52a4c00d2e393a854e645a441376f2cbb87b33184bfb
fef7d88424bf079721909f9a1dbe6b6412022a4aafa190d4d7b24d60244e8f9f
0822b26f245fc4baccdabb4d7de41fdef31271d80fc0be8f603b9a3d6effe1f4
f9b03496c3a7c3944ab13ebe97f35d73fde2a6ba7e7e25213edcdd11316d4b06
95806a1ccfa7d6b881676a99b9dfd2d64dfe464515da8da0d38cbcd09bcd9e5a
4267c615365a43c62a3cf216863f6f2f8398fd50a498cc8904a6355b60240bfc
94347a25c96b845aa0123ada0af020a78dfc427ef29f2d03fde7e05ede39daa7
fddcc85e750d9a0618d75ce7c445cd34ddaa380b7d8dbb12aee26d1fbf48c1a2
b635d66036f6832e8d4ab1cdba9aea9a6ac28ddbe953079995bec6d86e840d21
899c37896b83149881e76c77eb8e5a7cc7a1cf5635b1459bf9f371fb23d7161c
3fcee10bc4cd4e5a4e8e36126a99e37e2e7485137bb860ca5d35ec662c55556c
4fe6ba627211a882d04ad98acf1b7dc15013d8dccaf6d38f35fc116e24fee89f
93f666ef035075178f3c7f9408b63bece7c474a7c187b1338aa83176e2ba4490
0cc5aca1521874384028fade9441d11bdc9edfc5cb5429a7bedaf08f4ba3207a
4b94a877fc9e96aeda28b1163c2f379b2385849d3e9eb576b33bf9e43352a769
c2994659d07e25eb59784e40626d3661b059137bb32e3cda45fab999278a637e
a37bc09e49b625ff591910f22e349ed16fed52b0e0549212932db0e46efc1457
07c0da8cae7572e6706faf2c82f45eaf80135b349211c8889375e656737df5dc
51d8f445157bfbd342a55decb752523338965a6823831f2781db1ee67038a055
a8256c55cfcfa07a793a6f4a25e8da2ba3b81cb745f54f12362c8a541c7c0074
68e3c5397ef49021872c7f2ec945217de7b777dea235fc533ea71e0bab3f1159
39aae217b1d02ec0003cea3a52ea8b202b7df25743f2e7e6d39a5a98179fa195
fcb911e55df1a4af8751a3583b539ad7dc3c6a42d824c14984e199b0da4b90d9
ea103045db81eeef0ef9b8cc8e730fe36b2047377c2d8797b1b06d8459630501
2aff2f4faafb638b22ab15135e288e8a5259a146bd93e32fed47027fcf56b3e3
ea5fe9c4cfcab7fc5024914ab2243bcae93b8c15f2a100aa26ac131b6a7d778a
c2eccb11200424826ca0e9cb47f03d237e7fd189fbe1725565e1cd97f0737c5c
38274e31021eb55567aa81a48f493d7624fd8258c0a99f1bdd8c4732c98ba52a
1d113f38b139b51d6da0b3e0712c68b1820399f0f6fb95236fa5cb4ee52901fd
63d21710ee6a28e3dea3a18c9137a3f855507c77f845680f35d1f3dc0970f1df
6c590ea74e7179c7cd5b2ce99c3d50ca6b132c950dd5cc10b788eb32b6dd9617
1828d9c0a69913afec6ad9fae04838171fbf6433b627d70239e6845bc0106f78

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-06-18T19:08:09.567478+00:00
48437964320639892199173404548282870371204093378157
99210478092753328115607974302751766145257863268414
43570631558566771827868606747688407059590181723998
56625560284675084321788878563831770828521167428892
85730459648528289850672821331882172024454920641506
09062736644441674494836961846649693993236114315901
06504966390228790537241664768253825357297211364119
89991988553152168067126947679228893827445966268131
28469969773043992662581349992033963182000850900516
77344705323211318315781282927184149928274166952310
70899932799682242693058060114994395826208581002477
61085227584665156972237806586134080002882274138798
06956209102445546294091852847406002170246360908875
53522888251052413921489614801708733692766342711908
25243773004719889365899018753883949352834648576193
07013053954529113301020191943960926408888093312937
07709818557852154075204118328994440222268548554531
72470077927057443741831056185740073409197038379805
65293287932502475647386328856660538662070845048786
04484580869335537374561310536362707094732156504563
51171920615897831391500978923271848127152491753697
42939688654151364658283512652674162014952960937437
52818020598997409255174667784806844345641136875482
04229097758143237507677224298281827106723625225648
95187430486585332450477541248283365920892467645125
66797315893104653257355252816441022131119181586263
01604244618580952513199277467983662652116246844496
76107047251102241772585834540075152337625822753909
99524205314787047393052181646668273185678614942829
28168274861618978127088094229123624491742478678969

From the PIN diode (digits):

2026-06-18T18:58:58.365765+00:00
22477815138264921346575833780090681918842351247532
36910751334459542990070018024274756144787796367843
59083478113695968687772531181315929043965954611076
52509567954874776290519315668626263733621749097506
49280628678429030653857770692141604088555890660398
21549067984260223463114731528064523704665391963611
48522237073290601858103267416626594503945767941713
54062492966952705611254187187409319172936282539654
31464174778654540694418307534990981032133337565537
07312052290819429024996186537769551335222863119678
90784254180653264616331923849693530244858508798698
14176830743827259380194353171036594702038017234360
27480882599616679335775138684918866844129772618224
16566440486527589784416790437563322275486819585074
40772260475555353332576258811879595182670594537089
26378920786498095497768919237946606985533938992663
23925873823789251646525811827684461847457610208707
92407417141211754430947528199152461736471786152581
69212366659383828251565090043531313929301256608568
37088560222158117437436384288369791854443884282400
16049757264433354427466933258319625383626730117163
17895770237746920060588239324325876754905223596149
85179364753581638859835460066636937332537675441648
69291484421515073271552445355177760932899905014247
79709939347121199440423882896170894747710227867995
96838036457478365959402161007038721927062519389417
32043630086071613526273714850151152492563978490230
81850370296443736118363088926959274071503965422917
63567757812909607913440477300353493511657841019923
16064063614045556385802419690415530912088914677813

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