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-10T04:43:45.375194+00:00
ad3d5e75283cb8e6dfe5ab2111979d93ae3dff9b6ccc9161b59674c9452aa90f
1333bbe1b274cb365447450308be8678b4ed0255ac11c7dd65b994a553453c23
90ad38345e1d4a28b2984e5fd523c8d6a7c876f75f45b59b081bc6cf058d2f7e
6a9fd6fa8f9e43b808b711c40c2e8c7ace1ce1a6d44b8a78342236e48ec21fb9
fcd0c48a418a8afbfca0dad84b73ac86357e9b5bdb7d616b792d07fbcd728a94
76c1b52fe42d6e80aa1e55449d5b3570b7e090b14ae183c2046ee79b0a4dd3a9
49adcd424e28f0549308417e42a5e6a0a6bc50f5e83e7b128f633d74e8c40fd2
78c28f79f0567c09713922ee002215f77cf6bbee8bf5f76530b0ee0aa4a856fd
438bee94d7085aeb4d925ed5284aeec075a10b19d2046864b7cfd22a927890ff
b5ff87b2a21a1942ec8c80e0309238b6a3624063fcee4c80428b362d5425fabf
3a9908f8b48497cde1b35609dbd6ea2e571b6073657f6394042a42796f70a844
d17651403c61743f34d4d0b14093199dc81af3c9ee85bf19582dcf08f62eed33
e41e6faa7e147e2c3bdb835179eb36196e268d455ce714f17363b28c8bbe9d9d
888a7584277bb3bc786038741d0472ce7845bf4fdd86c4559b543c5bc926f00c
664244da9a83533940d700617d154cddb643fe52afa02c93ddd8caf3937e6316
036637842695f8e939e0e19d0755a82ed5050ae9e9f6ebc51f6660e9acaa8758
d63d839d91f9d80738322c30a9d17535046253c4ac7e4914a4ad89e9c682917c
2185e5b7393a39ac14d52fe734e3eb174b11ae2e9f3d3358809c34b622cdb1d5
09f9b09fe55835c08c3b5a93db419c07d376c01402919352febf4d82a5a5a1f0
c4a5e41d202e5d1d98e2ecc6ee3c3f88f7c7f383f8065ba7e42e2c82fc611612
a43b215ff295980ac930c2033a13fac4b3fa919422c2be12384e2297675f091b
3ccb161acf5861c36626bafeef731db6a6c61035c6b20379e36fd9da9316b4d0
74eb208cefc8db900a6e5e03524b9de7760d98e4e53310dfaf061fecd5064b59
6476a510513aba249b3053f8b186245ea105d32a230ddc8fb6a0a1e785874ef9
0785969114318d41635cb93483ded8a830b7b5bf87f36d3c672cd23b57f5bdb8
b983eeaf737b2a095b0381f22c4f538ab396c288e16e27b385f7cb7f52bd5904
1b277738a71ed2d0ab1ef96f86cd5137e62be35ee5911a920c61a902d3448bd2
ce5158f0d21505a19f305fc617a2e15a09d69afe258625d858715d5dbe10bbbf
1335350bdf9bc735a3c561d2db95d2d09ff368d8bb50cdf664e1c59ba18eec5d
df13b3967305ec613ae4ed5f0d87ae1166898f2c3fb9d1c12c0a88ae001a2d5c
9067aa03ec9b9b9f827fe10378fd2f19ab1a01be91c3ba5e31571d6adc61a32f
1c1b8d1bc5622dbfa0902d2155bfebca279c0638af5a830f67df5a65ab369d3d

From the PIN diode (hex format):

2026-06-10T04:36:58.173743+00:00
b715396e008e6c98af332ef4d355ec87ee7938010ae748794bff22b49ba6f5a6
e8f4f9360983882ea40bb69eebbd3675ecc00031383ec6bfa497789f718f16dc
f4445a999f9b9a13f443e48e9a971df13e86b0143d5737befe515b5e854259a2
0568c7a94ccc8411298c7c1921499cbfa5d64f16388758a351ad806847202a06
dc3ba9c264642896777e73738eef726ace59113dbef58b96d4838b0706e16212
c8937eb8ac2eb983039cf55c4d7e31ff4b8e35fe4f802f94b81d60576b27caea
d140f2d7034599ebfe6d5d89c8339f0749bf7efa624060c27857676a02f95215
2fd1ee1d9f23295e087dfcd4ad143fa6ad7bde8c4f6b73588fa0b06e813417fb
452bff0891223d2fcf18fffb3e090ccce3004a090eed1a9b0cc390e130fe0664
d028e6f19bd0d98705394174be585b96459a046ff528f14aeff5c2afe20f1fbf
f05254cbaf2298f7e98a388cb9cab425183f96067e8e193fb8a9a438b4e1a38f
393fc6b62a6900e4dd272d9e03d87ebc1b545a3ce182cd096c47ebc6c4d3cdab
1a0b9315d384a77a2daba8bd0a4608b42f7161adbaedb834d40d1d2b1a2b8960
00cfb7b4479c487cce51b7f93f6312d18fba705bd279e4c7f805c9814bff1737
b103e796bda7cd481a2ab5a4ac2cf36ed4111896dc01cf35b91f23553ded2025
6db968e20878344c07e628982ade25cb9e6ad60349805bbc2f2176d53630c208
ae3635c289e03cc9f1259f689155b0525736a70f4ec41fe78bd64a664bed98f6
eec1290462b14ed58a9098750b590927e6a74350f639651498ee91f81b4f8484
347c9c63e5377d14dbc8df6ac347d8d713f366df680bb9277e654e8b4e06b813
eca1b6976069be9d8e562e296ea0ed6f77f445096b0ad8356fac04b8c15a32ed
6faa98769c39a70ab69b1597ee69a485b572d5dfbcbd310b7d2eb90dad7997c6
94182d91cbe41babe4b851e9d0d62244d18747c53f597444f35ff54503d816a0
9ec7c3a74fd19d9a807d6cbe1502895fa705e30c1d68c62d0b452f4132592e7e
5dbc4a94c7093941909e849d886d1a571824e9775e6cdb5430ccd97c6675d380
d4ab1bb9242a18f5c00272032b207946d642ccce94dfd8ff21e18face9972728
83bcd88be2c93a080bcd5faafbbfc4db7f1ed7bcc1e09c6f966cc9fcf4b4d158
e80798a1cc31b0418ad591120f20b8500dd8cb83c2adc05f1d57ed92ea03c4a9
e6883dbdadaae60f214462f896605f3561cd5774259fad785c493e93552139dc
66d34e3acc047a98e977cf8c2cfde56cc414792f3807ccfc5b524b6ca34a4532
dbd78b6a0e284a2ddd55b23e0f3484aa5b818eae51e849327922f84d6973c4b5
cd13c965550340cbaf916160f575cc85da336208ef920494974e7819a2c46fc8
3ce385845a65b19d10922584460766dee68da909c818d7988a293b220c3e9383

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-10T04:43:45.375194+00:00
73619417406084713317515747746155084597815016694269
15195187781654847169030890342080028572179901854865
83696035447356529429744078527895356718956981550827
98054147260659435867840883179612464022286675382052
34544294318596386538386075157234532655912597072145
07143848189381474510287030856857915312834477743194
04105510776973736678408447086526666560668880622318
43996116961520944321862409135734003421248739014876
10646886673948089077469440749217611125040400834246
20448135786226256640284846568263986499762866395445
84379158530880325179860946872796150127994804426621
11126868188164609716635277644725572633912588450846
51301170262026445931812154251038416992201599784039
90575736381732392379882096561629041420699179349685
55846091381202666854318357640097252176826782756044
47472699220302553238495757078568460510973102967270
35886131574507565044486917530498839672267320647337
98304524333383575857722047522375177446596151882856
52823477097659885392405990476556071892200245478291
77306565619665293246932952986063369931069167464430
97221864593395495210489403581996794548349490185678
34510395092760222688979502388615298266981653987803
21114722801632404410109403827557181352511675063106
75890018651681588636554883773436946105423513438260
61333578073350452049416599928552316848838191350960
03445987898485317515234209910329447983387950943610
39793327828989042739195667307130113481554394452646
12976902683981882105615948959823629009543734378813
93939016879119535311559953639797495904878000975561
42931979501505975895133574170237434463859344103674

From the PIN diode (digits):

2026-06-10T04:36:58.173743+00:00
83215710004208527551468535215601107221753480556666
54093136466411825889541792004956629891645120591343
22689053595554196742545129623476206187559081919433
66896205049969763217414024253373569165792256358863
81732804713242065969940000405019261515421406891761
90395031390706981847268472468531035692772649754253
79284748842996870739640369530993375159077391269864
96942087030602822147295935419408257320636673234079
07158843607610295223694308453461472462091200740914
26551295444806004055350557651690889150695404114074
94751531918284753452385640858037246350062642256384
69645680634357639882420500394558032688278490603009
08719896712611472132672245716889107008804713977386
84521329432643379600838071567224818363991843861291
21990529752355770350896772264281647244101724500153
85313585613237098504082052760740524237580603732891
88473318544894087454539437603759044585768287546715
78963139740275529341049877783844521711890939676780
57012052452779323252245699552520069571190204118539
26017839780684196182519605905742864641106011196909
07105311720484939050117052185657671082552151056433
81148889491125468513732151984824454527718481346835
71976389166895690322605899956779575428250890210237
95670512290498451169476550894626938874489909576544
58325736092687243619940884482402172871278536422492
02140343322170664833437251394031883958081195709196
27308893561150088088075261497665384518153284801331
94739295298746039669366189737015336898509695539787
16375973209273624785335702785804225219404408962021
47560791827508637469503906144074458578621552327091

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