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-29T12:23:15.665699+00:00
2f36908d9c69cd734066fa044675e9a0c1483764ec0c684dc90b7e4976d3d5f3
66b522042f0d99a6d8e4e843257b8e6735cf7ee1c25da3b85e260a141be27574
697aa351dad1786144b5a28f9d2955a358850dd52f43742406bba0f7a4a1e1e2
73029e1c25cd76a9e05c09e3866a014fe2c9c5d995b2702201bac314bb348252
24e278111159a717ea8bf7290bf154f91efa57153ea6f92fdd0317a060035d72
5cf3caa993e670863b75c17b5498ff5493daf07c568687c1d188c89188194905
aa6100bfebcb69cbddb26a9b74734568e0627b71823d7d7d510da0aa5cbd1922
8887557e1e867536b4ccb2c86614d7f4ddd84b51924f22c21e20c0a4b7887e26
2cc3c8e737fce3b6c39e960e00d311cc8f183f3e1b23568179726bf8f1c25b93
9642da3ffd06e790d2ced7eaa42619d28889f374b7380990a86c1a8359f64740
caa3afec46e45a5f4137e6f5452b5a984b567d9f3b1bff98b3a58b4e1f777b2d
c6c2b3c7b116ccd7b121f639d5a3bb5a208fa7d0b706d9bbfdcb08dae792cd4b
8d9137eba350dda9b525a8b6426e1decaff230b8173fb177c0caa3a9532a48f6
f79a3efcc7639a7d50cd3678c4008646024a6cbbb122e788ffc5022243ee5c07
64526f8c22196bf24b75f7196c5c27618e7522430eb42600d16a88577668886d
b34983357d40cf38003b6d8f8853ebabb3dde916736c25a3a1292a6b25489fc7
fcb9a57324655a116efbb14c6e2297c2609439af5407917a74b654e806eb6d59
3966326d884f2a0270d56b2354d10105dc75f7cd6786b51f538a0ec259d50dfc
b7ee72b2e50fc5ffbdbc15781781b2f37c47e7f31ce368e8ab879c03af5f858f
28614d897537cf978b9e465c33d41b57f744c6156d3139dab45286971dedf0c2
3acb87e8ec3064106ccaa018132414d595db946689322e81b36dd181cec16999
dcc3b800f5d4be4fb7cd87f473ab77d5f29c76148eef04d8442f53850dec15c1
700b65ef53e8b598428e7b81402c98008b045976de4a626345745a320cc39007
282ba9748a5abc35bf924fd5b8a537f766edae8f01138e94f5398e5a689b6358
7935ca225c945d1708fbb451cb572a84227e660fcdc420197af90b6462dd9750
5208049b2fe271d8132ee9261427c1fdb45aa8319f389dad1806a3531cef3ec7
c745de47105254e8c12ea45cb4138c2ff551725b65cb43bfaf583161671877c8
a1ff77de6d69991848b82e3bb16bfe5612570a092fbc7e090ba7f554fa12eb59
8916621c6e2c7085a81910295f2bd1eae4e541fbccb2bfed32de80e8d3e52b5b
0b4d71681b8d362ed41bb2e7f9cd990a85913c70aa0df2059d7a7d4801b42390
5aa020dad8aad461e6c8054b7dcbb94a00d1a06e2adf902a0f3d6ad473c48af8
8eafb203cd2700abc8b2d537f2c2fe81c425f0e8a57aa85a877b0f649038c5ff

From the PIN diode (hex format):

2026-10-29T12:12:30.663434+00:00
fa89bb06cf7faa1314ef41bff2875c473ecbcc5d9048d849fba0a0e1284715af
331097328afe19fc5f59add0e843fdf39a2f8114af436a45adee7d8174d9a866
03f162cb330f6db987fe299aa5c3c0c9383af2ec9cd5e5628910476b529cbeed
01585feffc67f9681788ee5451926250920bab292a3d96330b84582918e46e0b
d4dda67a9c297143057d35e44f6ce02d278a1465b8549f587d0e166eb5f7fdb2
80025ff83e2a338e100a7e039799fd4f6a91ec2f207d2f437e9a82b9498b973c
861b28198338c1c7cfcd88ffcdf91131dad296aa92b5b56e95544eb25b431951
1159e74ccf3f90c06b270ff077efb2461786e5e9a8255701df23d6aa342faea8
7b531933056ec3fb724bfef7800e723d96b81976f82e5d4584b41c963881efee
97eae4c89363af444729437821d636415cf3e8ed19789ad0254300801ef4e702
7b8374cebf0337d4060c0a414747fd67c54b2696b33f7cd056f1a2b5b75e041b
ce6cfcc99e89fad997a7929a389fe4b9ef1bf3269b4eed224da2ba016bf886d4
cf77bdf593836db6b7c7c18f25334dff563c0e03eab349f9692cc6e84857f48e
c03db356fabc9dcfa18d86f4430f968c491451763d330eaf94faa7f2b0b65f2b
7a718b43ffd8483c504e08e407e1fa6abb27cd771787659c7034ffdd89fe5f3a
bc5599c2af06ed8d019ea138d556c32e79ea67389ea9abee6d7a1c07a4fa6bf5
cf6aab4f1a2981e234560caf35fc2c0552547719aea3b086a3a5d86a5de03aa3
7f1745176e4f117a4b209b7c12561b9c76bfc3a0733993ce32a2071f2c495150
1e379a6e83217458c89aff11bb78d0ad1004c8d8bb94cbc4b9e0ea017cd1414e
44e8625cc3409c5f38db134f89b4980c9dbc80c040d3944c3cfb7cfa491f3c79
c66155942f394262169aff97964a9e0cbc8f8711fffc4c59527123a13f343f07
0e64a3f7e52647419e8fc5b2999fd1a40007e49ddf39d13345467015f781b7ae
13264342b619760590cf27235c633dd5c4f45f21737062a0ec5ca502720c415a
def249ea7520b80b3bf29811357adf35d25cd64ea42819c7a54eaf765126fe6e
ad8248fae47253c90085eb345da3156154a23be56acaf201f27235ef30d39163
ccf967b7dc79a9466b67de02dbcabde63551fe3529a4f6ab79f7ca8892ec3326
73bb063745ff023eeb21e3b742941eee2f7d5b8543c388db228d6530d6a0a103
721f93050c3fe06f39c23ef710671b0e32db6583a53dddba09c661b88fbdaf7f
e651aea1b6ee7a101b8d348b01f493f7cc5755172da175c2ba36816b01c18a04
ebcaaa565d18da1d22ca87ba492ddd04c4e898f2d3adc7c6f7305b77e3e4f29d
bf06c6493454d7bf1012413f6fad148578c8c05fe563aeaa8a6d96fe56c51523
e13b3e0372146fb6be44bb1e794239f2435af288c310bffa0624a701f134dd95

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-29T12:23:15.665699+00:00
47544441560515640204701760937255001204771126731802
81340447135366673723420353269493638494381020271716
05226381209768816243574185638833134767163606876064
61150258283718699209340601799749781234018695208752
30823620171789672339411184308721626647032360960393
14926947123459179323845284472486343593364536257305
70970091057806551615690498231330612525811360709289
25343635852630341754807802207581467934943032926483
36263844955582955850140017432463622735862921140794
91475066630644643825363716835609446808263189716463
75709095655569439052758625595927527965397831192345
98947999772277335763879032436783068708467541455563
80698137688266102975488423637719926369834272546299
99542580542096003470027408877734369702346792070082
11403425077517250892399742173467148038000636871804
36097973315325645600590943368371792215083763614142
07377259998565153601901710777610345194964857758407
45221682840609895702500936794202120735840105170334
81318338149489138314781597898821202329782471280471
35560375953343409777371755513958709251278768982109
49578082345129945835480016086024193620494802375046
29790929930553958400907983351571195618204204684783
33132193121101838152664223296444520039048918749899
69169050129544074043691638908853914679846555027443
01194248574290045599882153349248932308808187423234
26021596322522110098518082080455471319463820399380
90684959565773240663832862999969711682849346649280
19404781149101679175884997032419611909055324728446
59770786188710094788260911678418893722982810441233
68251641954365789150284391117713042741544627785310

From the PIN diode (digits):

2026-10-29T12:12:30.663434+00:00
37870627701920659135927162934472736060407121755116
51503825958973675447292075670669732529166802039851
15098535415465959256585698371671078256900188950304
23368481469880461171414261505111328841241011662256
41136705255379084539382001848459882514221081782802
95624251421610260351537906454732254767265430857339
51603427402531569399361749507046818110498478789167
25811789766344920739151978702334683787013570524774
68238325510510951475281414615084251846936932802850
56295147997568714167203354659225205437670028300223
31169103550612106571710397753850796324866281839404
27085837516746545659852738557834776286010734198947
31098283999343375177866014037973054498728742926179
86885761413467155040732081186151147548677682954322
13396772608078080706873919233501561252379558888553
94750641015861568695462103565869710922280764070671
79264129528612755344058284192574637634636506935863
27236923107917227532552418862756189195601557475062
07314473818030555410313316885417872073160487489685
01246578689892956456955619793780521257882892644876
60247331602198978548475766982254515074581288433517
76898213356163526307140063387165584397785359640007
57575169701221298374193867668225180544393592996196
95331512986092650214126590731732841159521753225392
78644025996578751881381073307214830033529363219784
62590601145348459903832169700703028953815341647121
36465138158706556902623383664830472591336795363441
01486061031431470512631157946216032714500131656186
09989784438975278174618222162741523901478785234561
17948654290701933804708693242934358673450496527399

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