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-23T09:10:53.818129+00:00
aab5d1ea105bb806d14d9ce5ffd8e8f17c441686453953d7cab87448bb01822e
fd280badf06a633340707046e340c2375bcf4d9b7e470b65f234b66b438652f7
242100993acdef717fc0464a458936ce1d8ce7b562459506dfec0bca0c7a778b
6630da232f312614108390b974f320292dc272c80257558f1c1aaa96c52786fe
600b64d245385d3c6b451c3d00f0330e3670f76debe4aa9ccfe8c99e7aeef274
e8f0889b29c6825a70a66eebd2fd334c7d8db71e47fe0290c832a34b249d9537
2a020fd68b1193d5fd73ecb54819d0a312d254988a32f9f17c6c118fef8b5b55
26049616ae8b888293fe65ee1593675ee1272bbf42710427ab53104f22dbe4b8
fabd10a56ac0eb0111e4f1fd07ff81e82dca9d0ef2b40fb4275e0d0471c29e30
80f418df2419acb4185cda2f4e7048c77354169c6a174a3c3bef512404da7218
a56822d1ee6d126a0219251cc7fb06fd3831ab5a0b9dee8146efc72db85cc1c8
8a23e0d2f930ad2124ebeaf4416471de675e1a640bbf20c3a1a743f4d1605dd8
c7fadf1d6f1709a4389c7708f5504ae78b9151e6c06e2b4b9163e6c890317f16
61976e72cfa2de81b933d0e28449f3d0b2f74e482d292e75ff30fcb472255d74
11757630aa5bdc0dc5f2b0e21f03f3cd80cf8b2558b1770ea324785e875f8ea3
0df8077185c0b445b133b830e42810e518f4dd9e03212ccba7217f0ac3e07273
bc10ab4487e04a2102af0400be01a8eb03ccd898aa6c22d1647e63afe47eafaf
76bd6dd61e417ea3929f4d248562fef986bfd4a81f0f37b150ee44e53f61aa3b
3c8b5ef91dbcbe0fb1fd8112a5e5e53491c42d03b45054ab532dd3a1ffd5f527
c871212f5ab59270df97fedf95abc2651fafca97ef25a901d472bfa7a515bf2c
31fa2af8ca9033cbd3224b88bf70e936ae24593ef5d3f62638145cf65a11deea
acc7cc3b3350dfec3e68aeb9bc6514a6cfccca103a6aabdf1801906bb79b572f
607825a9024f5c62d94397ad6a8597daac7bfac272203f14c19e69e37b8d4796
9f583e57a5af785aa5209775f8269e5e4d2ba0c2cef5a99ac30e99e93343be1a
dd158102a6aec337c31952c069fe23d91b30b835257dc4afba0629ed4c002370
d04596778ea165743cefdb1c57dd3375390dfb91df6f487f157bc8f2badaff9b
5c5d023d7a1171ac4e3417b52b93cb81171f47ff2ba80a1c3dc53a6827d0e93e
74122fe0e3bae7ab1314a57200c5a0667d41a44f80781278b6d7ae7d33643c85
a62fb42e16afcf7b2262fa7cbfb2a3598d3c87a4c824b3d599322ba144073877
bbcbe9ff4a1a7021a7a2338731fcfce474685422201795e0a8484b2564bc49f7
c967a0d2632cd6407ae2f7b861de93aeddd589a1b1f7106269e0dec5c058fe0b
f1f6613fe9785ac0805230df38d07bd8e08adca90fdbd04944bf4f9533743e8b

From the PIN diode (hex format):

2026-03-23T09:10:29.618323+00:00
47497225a908ff9e793cbc6e433d88300a33df008abe2cc6bf560da82e845923
1c119dc8eb9517eeb2279efb1aba7b1d1ad5da8f3e3ac27d5ddcb2cc6f9f8581
71e8ddfffc66f17b860dd3c9ace0b2e25fdd3beec12620c28b5b2896d8426b7d
64a24c4a7e7059794f88957ec69be1e8820cbb28c84814ed25bdfeb4fcffc733
fc0368d0b76de2d314011c15807bc4eefd6b508edc7c9b2c79e50c774f208ddc
0c07b520e17c7a1d6a4159d5f8b1be8f1b65af141be5ce77ec1eb3ada756a1b1
f3451ba9e7501d6249a6340e24835c17232293615b65106fcf85c15bf5f2459d
6dcc378c7e7cba6869a3d11c78a778daa86755803b66d3775da6df70dd561afa
e65bf69d4c69aa0fe36ad42a362c97c809d098e7bd748553e98bba5441f52579
dbd375ca8019db56614ce1da55992ef331da7d85080dc24aa8b899d566d5580a
ddf9df9a709ceb32002d4cc57aeb1dacabd5e7eb2e20dece9e5bb4ba3562b616
78ac1f5d5a847ef477fc6327a28d5bf65d199ecb784305d7379c67900d8f925f
123587964eaef3e44cac1c3c356a7d17ba3d42a0c6bb31f888424bed879fcc2f
eaed1dd3857ae3960dddc76d68beff5b8008105669806e26700710fdfee78650
4580aa0f335f51c979bad01e747ec5beb75c7fbff670c41cbefb0e689cdf3da6
bf255d538e79abbf54bc48c684d8a81a7e07a979695ac0806771ba8c51f2763a
3de6e2d5a72b50ae1faf570b63dbdd1833e4b853b074ec3008e6fc712d83eb4f
8912201585db0e4dde2098aaa201ced593e5cbb09512a4bb37073319a44b64ea
ef45f761b94362b94b005a5cba4e864a59d8414bd1d5b3a6c187aca33c7c7ad9
510cab65b1995cdff9e71b0b1c0097ab16860f3e79ff0c3da246cfd81385b1f1
16f8be8b7249a9452635c722e3d3b5786435afb38d1f9ebe4896cce37abe0f99
ffa47b6721ce9529e69902537dca8d7ae62fc0e0afc53350a010a36f664c6c6b
c65583b4727eec014f439c512d6fb37472d4f7ba85146bc1207d73457c895e40
397eb66aa0cb4f3b33491d204dbadd2dfbcaf3764b091bdbacb163a2fe30575d
1ef06b2966190e802ea52505991f4557cb355afd78717d09809eb915e01e27c8
0fc36483e59da1b5ba679b9e33619ed8f0dedaa0fc34d585eb40c986c0f3ed53
2214ae3cddc248f1e0e5c7956ab18440489d842ba61d0bbbe1b61f52244b6175
28452fbf50c5a1e73fc7cf68325e5dc874021a81ba7afefe772850bfdd0b198d
8479dce8f69aae09487b3903121d7b1fb795895eac2e6043567adc4410354737
bc9d8f1e47d3b8b1e103f25d24e21e7be3d94a77a5a3941d850e24ff94de1a2b
a855ea18507fcff67251546630a6652ecceadc98302c9caf8492ca56054380db
91a5caf6817a29f6b3fb4a5f22b80d432420aa0b64af3f68aa1488c0ee7bd44c

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-23T09:10:53.818129+00:00
70811691840677562468223469578384167287013046401173
06995164121270649455917755267111015282076734823633
00535813279270746937542940819869490611122219390248
35474938201631448516324145941402878543282670509739
34961100695693600769286100511454120970565822163655
41983090126610517625418330710244506375365749554202
15391747158172256318845238502408174339918538045022
74393630470121470394394391661304397183167934848916
65069201170729455714801580399413041394584828243625
72802492477812729915842256062374605981360414246504
34091806022537289906564971901157297099458492933835
48733336650013039426001191329561676796939929112309
64565619088074394581921043754599444927229751101462
29855132737878724541461748801437931617171848709113
97763103283937887719146336209435954263130713339280
69775184484016245803334467332710951415881671683574
33027504009001680352700834002699752675751889093065
26634659773633983491683115557780686397705960399429
88901577291865524596450380808471834561391333479081
46125149719401317551376901149167652191444942445134
75369112547436896238562092901772995951806204748588
01206616580671240144078355874796203769027992986751
73063351722394143263209358052341715059886287657520
90653251173858947743609469549514535167902621290266
74955595258292053527488453372596758606417600351269
50194261011660288751175713451172272123865592930261
22171372785223814347292331714368102861975804396216
18478671192065140097600225656479282018208274255100
60336647804622752334982491786389416035643679535043
61680756198774261233676251354916048434322349687275

From the PIN diode (digits):

2026-03-23T09:10:29.618323+00:00
71731437690858216088106761364810510038904498918613
68463289352817574923783958268623292643625894259378
11593329130223341372789559933832943991405066072500
62767426128921793649269855301287407220378980995103
04830920012821282396078042245544211219793241120781
32242229066589779043270175202719307973678661776927
69802998736652143631922335344797910116113393916957
09554026248604056328206720680385285902199366128626
91577605701506425444510952891633833986846537211728
25869776855346492533081394746884530288105412565000
45769722297271463258918086539882222072319390322619
99396241919325582067055556034413434695185335507874
76722860530625238661666098874936667535594729332250
13990904909128081686052810381207163480692870155195
81218630162697908392279112962890140456616691379383
42217191848872983268262607692105909228031386408118
58616743807431758711992451848376164808134531793718
32213314773252706201477649186487550751256475006997
85679885750090928678347489657579669335726360242281
12710177539227112800517122341562211261627019337722
90391473696938539934812000537579413158907250229015
53642303334941530283254122479275975180601663110276
08079885318014260179675681451179161486332007933225
15692437946457268206607959517329327786451875092772
77996248879330074102251428466537055331698753902013
25092858852130391595003157618186035558519758605233
64349283342074609472994906773264725732436629118782
31823675971740694791809761639904509493160226298622
19408091112541322154740972235703182923318349379472
46966786226816537155885743307184770393363023741965

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