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-09-03T19:46:05.679224+00:00
a7edf53a30ae6c19c7b2a9b603e07fa5eb8d323358990cc49fb5bf3f08937e98
8002cd936d8b1b9bcde4d6017890763df70d13d7c0d5754519dfb40b2b531327
a0a586e51e6e97afa3386bcbd8ca98bf49f92e6868c73b27c8e27a79a57980ca
4d9e2b0cc88b9dda4a973043de016499f6f0d626494712aa57dd13b8ea31a49f
2db613170e567e9f876699cb8fe096be1047816a8ca794c3a1f749f43d6df1be
9da8e2d4d6726cd1edab0afbacc60a61120842bfd03e97126f460f3689160726
9dfc8c3c59623bb0042ba740a65b4a52441531db7451269af489f82ced365ee2
790fdb61f95e46f08ecebccb0fc7e0e7dd87364b2dfb00aceea285d6473dd13b
3440951bfeb2d8af693a230e9df58934fb99fb9d668aa5209979bdbc64786ce1
1b08969d93a4654670eb4a52cf1914817db7c0e2071165417c81dad1442cd255
d3c5f22a5db110eb131fb8a7b5cf5be5acbe191d2a092f829c2b7e18d9960b33
9eb924f4424faa21e643939e792759b05fb8acdeaed10eaa6f8b86c37d4dca41
8f99e9b352f176ff685467fa253afbc69c8295fde4c9c88e91310cce3f6b56ad
629c92dbe10a429bd8c01e43d3345cd20dac289c403760e0c489e91809c9544f
eb4eceba49652975a8ec0c41b68b7e9132b2dcc72433eb7f5205a9c3cc2f8077
92c36387345a575e5f723649084c875d0c3b5b200a246e3ce450689f2a308217
89b0892963d71f50492aeb8633e583179ff0cae796d18b9c07999247e6940a5d
d88326662191bee60f4dceee83d78ba12e9ccf6d4e41e72863a9402ef95d08f3
368788902ee945cfcf8addc0908d5b9ea9a2563d22eb347449d8084361de38e9
f21e18fc631eb072f28f41c44a7ca43af336125268f0a856683069351d66ce2f
8a05f0cfa62b41ae5ad10ee844ce7e5f58394f1e1e56a42843a4166914ac7804
e232a04a61200112e55413af296e492dea8488d9f7de6dfafe728222c4e17468
0709e0503384fc85f242934fac1111d60d910510ea7128b0bd01e92cc9a27eba
26e195c7e44b34c40a845c1e6300b763b7f0d237fa8ac5ca6ca6804016d884a5
c4f882cae7db5b0008f4bb5308058aaea90063520c53d58f0fa214f6314f7c08
17df2029844dd45a4b87cb455f9c01644fb09a345f48cffa17e4ae4fea10298b
96797fbaa57e805b2d0dd4663299958cb7b146a5c2dfb25a3eb51d80af119f8e
5e350897bfd8767476cbd4bf509b4a09e9e5dfe90804d95ac217b6f66a0069c7
e10390dc13be62f70a01404a0ac800bf3343b005d20e4bff4eb5b2981f5dea49
8cfb29c94b34b57bd2af0b088f98dd5102ad580a79ea33e6b705d659afd4a30c
527604775393aaf52d237bfa87e3d2967e20cb99d78903a413a9451ec57e2da3
bf87847020f5dc294b5e2e9f7e7e5e900fc41155179a0b9789d752f7aa55ca62

From the PIN diode (hex format):

2026-09-03T19:51:26.280693+00:00
b171cecb25cbd9fecdb78b638c6e1b58ad42efa52963c86ffb6db3c71f44f486
afa5e434a22e80ef2bca7d46bab60847cad98f41a285109a900ce553fcfa7cb7
d6f6512e64ea0062a5fe40075f219df9d545566272ae9f7147abc1a6342d4a76
3b4d966614d5b4e873c873d6fde46e879f4e6dd6bcd87237f7dbc8c57b71ad3d
de8a64c669b87e9c50b02374a53944c0e97d62278570710aab332492e79dceac
991491c0ef882955938a00c2a4b6968543073b3eac5adfbc1374b6950481ff22
f9a2499da66a404c4a8d4d28c9c98a8fcc0478e5c21d1d13ebf73f002343166e
9eec1578e62aced5bed7d736d0a18f8f1e68a3bd3535e3aeb9ef00522d975ee4
9edf5aafd823f8ebf1df8547e62147a185cf15d945aae4512815071ec4b0c700
78662b50e4d867d063948fa59ebc960451734459d5d993a0fba0f446736ea09f
c70599feef6940487d57a0173ecef86b383cc0c840bc4ba15e3e2b0f81bb5db3
c41b0d05d1cfa99d259290a8a24555a4c2096326a7ce469f703a8ac984bd2d9a
a3b71a5438c1d5bb371b99aac2c530963351c4e6314da306e0ff3973c32990dc
ccfe575a9868d8b31a671917218f40f7fe5ab95d9a0324038a9775d2b773f39a
b8dd588244d59136b66572d2fae1c2edf3f1dbaf723d085c2a79449293d4998d
c849c7bae9129b7f74ca71f92832bcf0cb1eaa081433f4a439a4d890c869fa95
a5f5bbc90bcac2e42ee675d365db82c2ad7fa5ca622509c0a6e347c0d132fdd7
41b899635b1718998bb67c82b251c32bd94ea80f3ba7b5e8904b8291f5e500d4
cb2811ed2c4c7c1c76b83af385ab92c11d94301b10025d53bbf0b713d5db7d50
32c9f555b2f2c1184b1ad8826bfc9ad880c166d2a9e0f79d6027791c861c4132
96ea45092e8e419e20548434180d76dfc6d2669bee46a49a263fdc47c6a31f13
18ad60d461e9a8018384ace750b451621b550f8a65c09105b6a66621a74dbefa
2852dfbf61d21c16309292dddd65f71bb28a7038afaa0442119abd878477d0d2
5c2202b50292fa03666196dd9751dcc8766d73581af571279daa313ab6826548
1e1842477cc52be355d09a249f233d02fd1d0d94b8510312612d8aac45befb96
d85ece38ba470d5c0c690bb350bcdd0cf33accfea13fd149acff09a86d94bf7a
b935aca5a948f4de06a2b97bc37a463d96ce34b7beab5b2e6a007731d51a99f7
de8b1fb5a836ca3f75ab6206e5d477ae6b7c06d89f3d6178a8144176117a18a4
568b36fde709aab6f926fda757560ee3cd69930a1d82a19334f682c0c0049d97
3621dfb3887850ef9e303c51a60d9b639d860ecf946e5dece07375f34721c6ad
1c3cd4ce6bb2e2e7c3d8fc7e8a8f42c9ee8626271a367e8bbfcde079ebf381cf
f24c63b9406325d0c0acd419741ea68ea2319060b8286d011272148fe10d3507

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-09-03T19:46:05.679224+00:00
67584874082599786982032765415051885312965981916308
47265228024709392755012044186113199217692580114383
19396065343010517563560752917346040499593922216521
28775843123957745148670100533873711870871984496459
45821923148626593502534350901671290640674895617361
09905768140871107298109718086691625118117015543722
07385740608998597604436764669174826821491681385437
44549421159794704288159935547545007262337161595264
49277875055835145737525357023865325321898800200827
08505747640170127482252029258392071701652429684485
97429377161931846781917290252942094730564326245011
51588536667970336747582139897695847274147011393495
25776543537982180484033758985630494245491263078673
98564610665592306752921372405664559696372409847978
86730141176812658239264550789936512782056995472819
46959935529087949514547308763593125991321036106080
04594248302337763741993180734234513123595039560753
46714810933138023345901577313961465609786540996964
46930854353644466938924441915869628661345216730867
97563024993076144365967424645854188204688604480553
29024738056643657490146826958857793030866440676422
05207220045060749732011884197541107345323609143034
96160407098051323366477972171713450516134076890144
62268638499975529610329230990083998355389708662864
22326596309100088783080538746900998212834315622049
79240823324132779075356995560100797654529572237479
16413950212786652628914513025053494083777065947890
62812928751759429453085191181618918055740908049094
23820600059903441990981001647410009151677605147578
81785231937340417552812375110843528102738810215183

From the PIN diode (digits):

2026-09-03T19:51:26.280693+00:00
77133783399940102788736665419911097999316834756552
62462843257086820871436562331654441283248381460000
98656407953357698698147459137171936652457418597750
02208015151035597809881455972313736138009805842656
80763516655768922598393312131071513646577253204592
36418547380094648250336707596272908819168249042934
62735766066476744177403843042094292919630035672210
58212042905461434330046389535374850082455194589075
35337133716133216970814021073096769900200243800399
48436558885004811568894760607015106059990553056472
25876023620756609264887561946243152987937996271305
69573746446862698564940999386770591258383289455463
83268456938755275370949748505181964977630657159541
44879052047926032523334364908593540336033851178315
54848830684554820114947514610892422168464753417399
86185527161340508830700820516457644405496587119446
17013094732765983709926671925065845399912324533982
24307881954378681559678144753045004017447624281884
58337146932948482716029383878319258050857893247526
30075428930269579639212834286550506909464265583284
32522413189802557064543863719863311924739697680131
32728080819827851538019245058266023367779040829197
28224846460127783812567570046617548935321992340281
02460302975051811809158826133957704958823001723024
66712497438554365935610229134884810318974538726990
50945686711392120511798088125861637372096809489122
85537265697206628523952270615052839071914606001949
26533931816854631771980619740724065961972068206518
17222464863954097082386787861405471029306147523092
92045751543379362080584860816613559957341448109315

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