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-03T06:40:52.094719+00:00
288fe3ad5aed0016a2d9f27a0070db43cfb24b7277b8c3367a21de8e8b232200
8fa23f3cdea5278a911904c5843784dd180b89579e727dac7b82e11f094106a8
1884039e0cdeafef8117777dde6c97aa7794e008e9e7d309c73b75eec97e7bd1
c91d5f1909eb3ed9e31a6e12b65de1d76a629b7384c64b6b15bb2641ee95a790
5edee9ce1e97cad9f7be47c2844924be1f6a0f114367a47dd392132775ae7fb2
43000d97f42471441368a77d83012c65c9995d3f7aa965f4d94ae7f085381a0f
801d4a32603b78c3498b5de644fbfb11f7d2a5fd4319f35003f569a63def74a1
3fc957c00266f544ba86ec4ae4418d9eb05b8947a351c24beb408c8a036b64f2
2403df58123cd1fb0eb37856226af1e7f0ba80813344ab8a76e240e0461b08d6
02e9a920bfe365e55970392bb10ce8bee5838dbd9c33c11bdb65a4227b3160e0
60f3ca7ddad2cd12a0ea6e618fd49c3db333ebacd54405cddc838c863ead3e05
0bbb5e48760f543047703692f8e6e3eb84c3ce0778846eedc50189aa1e420c77
d45f38a2da94b8e7ccde7e37f78fc2e64ee44c1e22cf32445e6fddf6c73a7d88
026668ac2ac1accd9325a04ba74e5d028b87f2ff986f220618c02bf5ce11086e
1a968c3505fa5db59d2776f6f677bd22779951137c5e22d65d1ac9ca5bcc8f35
b4ece46c5889fe83bcfae55be2c6b167f1f7db65f21f7d1cef62f0ab20e9a793
f63cd02523fd0d08d0ac16ca82c6b29a8290d698d36139db6d9baa99f16f3603
c739e85de9fb2341857e12cc88dded8c971bf28992bdb585a3323786cfbc6b8a
36e1788f37b1f3c921711d9abe33acee91c7512b090624c8ef2913db133afe09
c2d94c4bcb45c1c5b9aadf9f4cfc0df00d3e9dfcb0b402e131d61789e544efa7
bb55a8388cb0f6b050148e1b86080dc9b1a8828f953bb2bdf367bddd2a3b834f
18a8a05f3e29764bbde18bac9553c04ac913f1b45a1dc2182728560177fc0d94
e0be620dab38b7feadd75c1ee61659bb0291f5a8493893d29793270fc27a8457
7ae2c4dd1e16e8c8b6b668cd0c78e9a7f200e7990eb7c04bd08fea6e24be1b32
187d8b75df7c0023ca201367cf3aad78c83e9057ac43b225031a6fa5bec2731e
126d0b3be343a7b9799ec1e48ce918d913f72565fbf111305f62ff5c06e58435
65c3d1f09e0e4243b1e1d797084b10c1144f536110460732942f6541da2a52ae
eb17eeda1b17df1714c808bc57634967b7a9dbf00f79e004b3141ec82d620b91
745296f8ff91a67f5974656068e0f0ceb0a6e7adba9f7f11de33a0fb74e1ee32
8f860d9bc355d90d11b4bfb0c3b6cc49060e316de0272f4fd8ccbae15a50b824
5614518474a155434529f72514ed9861fe073483239b1f976443d4eb434b8e56
19f134c91acf5b0144ca01794cb9aa77e1a50dafa5753de4266bdfb0fea1fd1d

From the PIN diode (hex format):

2026-09-03T06:40:24.094579+00:00
bde47a699f7d0153ba54be9ca646fb21f326acbe508573d15be13ac8f975e348
ffb72f4e4757efa2e05b39cfdba7f4406cbfaadbddb03439796f7acce91268dd
e26c03d979943b281081bbb3026946c03d8dca798177f3ab9e0627eee54dc824
aecb3544049c385b4cb1e85b26e22ec05bcfe80581b456891699457e041a3a57
af69cc611386f0c3a4acc62fe9adee13a0044032aedb7a57c145a5d5b1037051
c78d8403d23995c7c81511f65da9082d53f270826dbc2fa06b47b183640000fb
0d7b7dafb70496a5779d0bc66d493dc749016c818590477d09b9303bb9a12841
07c02da4d08daba5babb12c94d18f0cd9b41d5f5f2bf387d3b826b56c604cd29
46919f4fb3fef09cd0eafdd20e915ad15b9a124e1a83aaa71f2ad90825f94672
a915f318ab42deaabc7c29a8c192dc90a0990dcfc327b7b44c0d394c00ee97ea
1ab374aff02cb982dd13c26b0fe0b72c65a5fcc22c24b49c417e3ed2c8d35482
bd6c02b2a939eddd26893104679b6f94593ea5cbb5bb60efc4dc01c6b8b8bd20
d3fbeac52acc2187e2d74f53b212e2ced3960f1fe03dee24bfe529410ee3526a
3dc48fcfaf562d250fd0dbc6e5abed969080efb537e5cd64f8a006975391a4c1
dc7e2c09ef92a9b08fc9f25bc0bb8af1eb73601de639b30f53c92a71cfb546c1
65f8c44c9c2b31c30144dabe117e57f89600c3a1ef53f8029b3fbc3327de2666
1db0fe93f0e659c8e0bc94c24e0f4d83e539ef6c80e7d2d6f4b597dfa9657269
d3eb94d16e5d74586cad1b809d6270fed75692d5d2a5883fcc2a08f2d19cecf1
a598e48452c542a262f316514eea1885f57b21de368329ea5c41776bc863cac1
06c4f0373a742252feed57f493b2f26a79b353e9746379985344e320c4549afa
1e564d614467d96539b9dfd6ff31e5210ed2a18874eb23b62b83895098af5ee9
e42e3eb101f276565b2d2db8e06999b55bea8a295706725b7178c13a3731e159
9f486b65dff0a8573c4685666a46fd0be8070d6a9c59c3f1547a883c02ece509
40fff788f173ac489ec0e55420205daa278523d507b9648844b54bb97ebc3a7c
71e9c2d246d0ddd62e2c5dc324cde3e13bfb752112604a3a9a9e20b1b801bab4
cf62c272d14ce90bd3868aad3aaf9830bd12010fc0f6c4ea1c28a5fe82c9ff31
238d83e2ac05599e4c2b256508605867713295ba9d3ccfeafb28bd73c8463215
081e54646efbe882850c0ca2188b0b8f7988fc14a052fb7d75ed2b5793694908
aa8f4b3f9caea1bfcc7d8efc941a488a4a97e4724d9d3d46300328265bd12191
8f81e02f85fee03da029e3540a070cb2004b8d9db71106621266e53f5140247e
7bb192c454d4bfb78c71d3b20667786b3a950f7a29431c076bdd5c579cdb325e
a1f77ca663a341e5af79b8fd52a43bd54be97312789840e811e3df99cf5a666a

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-03T06:40:52.094719+00:00
40437390002262220012677875141984955422334239353400
43626360653938452504973255322411378758142572233031
09650668243203581275292319250851701948080999591726
23299525096226101882930698551532987507218738654967
44943051907194327336903106151767036425461939177427
78670013513613681904672531014401539363226901743356
26152829745096592095733993681765672580030566611661
63879202026886347465415876913771638194756440380307
00360388186014792086340686282951687138186470270802
69329101891257437712903141895651932701643423499696
25186010974356617951726805314034627362051187947218
15844871125446329507203210970137703066121995566248
84265543947876303450689411995825360202047242937247
37607567789302393552113406249243170810265040530593
81573918198934195381192494349326914353800888373188
91987703013125289871326747603735130872223098785430
44529757095570531154039957933565332618364051273746
89813363505534880738542043557733132954905172459981
43090636411919580994767569939785705976131362577680
02492337686787856856407676802042273408137768304349
59788903894259317924686095624118758939724983927419
80902994243940860119134890981371568373923022898702
45687356475147391594223287229630228282041220670053
14839275431036902750242539172400353219035873206244
87726778370326116590941530180911596767852158934024
19370117489598920632530195581466677751087516932079
83971670075048470165428274232723232008888799730383
69152104792030459811451682504566278916019604766673
86592717516016504334135595851317809176958273061449
09394779869080843686208132166185676941372052970752

From the PIN diode (digits):

2026-09-03T06:40:24.094579+00:00
89220559250183868490566670333872908033159158177283
47787187629157676408917076525721112218040803214859
40162987790205709261412129197158063977367453680456
56917677913846929105298086372253692604265887750597
19349564729847731960046450742287936965770312819941
32035749992117936908458312300988476007717731000000
13232575830450651957119809736199730108293344712509
85485985614065079245644171658687187724556591562559
30078698044170455979795614459091541878263170673142
08377014692124716670882441689346446053139539838076
13577600512679167544853019940715834401659444368056
65266284308908027869573837490403551148896265818796
96019884848932974233357983781850153161369141651482
06619643758645371598715044288155006006518345649326
44094669764391928738159629577915834213817093019676
56434995016890172687500095618302556388513938022976
47898848947815773157082881516901140548109316880873
27285798128646653663420856655232829766629822817824
33233354314192651907999306965558163482874778062179
83169921528368329684543086779768030157854933146136
16358243313780527594466277011886914545840553819138
41870614911320935855498959720701688760703302067011
07130656899584223660020964361572725892843232937039
33350785003668817585268858241394704644939536591733
18967458545832778401868098941476113438735875524889
18011592962840653049354131720589587643370108968803
13504986576040891570502108308400103033121262243911
43213620608225174387470573087043756356746191254248
26723874511477576170480340389133454329473361604184
10071278007541578317069818026381643626237746968491

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