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-04-19T02:12:24.473974+00:00
d9468f9ea5777579b93ded8ac0cf72a32e561c8f3201910d1443590ba78d498f
7837b86a117aaf85089ee75bfe355a9497fd152c69c5c63253c3938b2954d73e
ed02fe38e07864c5f5afd1af8df76e7bb8ba65eb973739b5f538ca5cec872d2c
856cae272225cbea25972d71063bc32862c2d889e5d1aea0ceee46f78181ed0d
b33eacb4f8f45a938357ed7a03fb120fc911ab0091f65214444dcc368b49bc8a
fd894070ee1a2d318744df0b41bdd4602db73b8f01892971639a79e56d82314e
6978387ee5596b33a59bdf51863c3f6c0f332d0d08bbc603824112d593c29980
f5c355385e6c15f3a698eb56e7536e2c680153dd98b0a6fc18402e9b4db2bcac
106c4ab4c895ba754ca3859835d8828e5b773266dcf12ea152ad5d10b7d4342c
7b59151def5051ef4fe0ee34e333b5221e7168bb7de00a755eb489efc1cd5413
acd293d27386fa3868e9c94dbe44898801078aff03274a3f79fa45f32401c109
10ef92f3c1cbbbe85d22f2b13f5c448b6d4a1f9bb8a2d38bc499ca7bcc8fe2da
3baae5990e0cb2ccdef3609b6be6c08a4cb5ed3e6a4a4496a141957ed04d9fe6
4cfd6b8b36ad67b3280bd3af0bc48e8a913260d0a592c9c0f65996625c8d0d95
5bbfe11a3e171a54edc8229445edce7cf98f016cf423fb2a54a4198701d70cb2
54ef0926dc1194bd247237eb2fd867870279d42bb47b62cd202457134b47b63e
ecaf7008e26e774cef0274ae7001a2ca4267d409276fc63679dd4677bf9c5802
23fb91efae987e68c1773670ef21bb7afe7c44d93d5c8ddf593ec00114da6a9d
1de021dd0f1932435dbfcc881caa8807f3761bead4b4de98c5166f67af02dcec
0799eb07933b18de38d9f81ef959d366525e2dc97b1c0562cb002dc4ecfa5344
090a568df6c064c281cb5e984fc03709830baabecd6b4706c30980fd4791073c
1145503c9b279d15c2a1c70fe594b396134a64fc3d3af530a204ce1af7f938ee
41542f860af9b367e542ed2168db45a0c9789ca8de2ef9b4ee18735ae0545c64
6a50f301640b59c602615631a067b7b9cdc8f5c4c8ace02d97f7f0a4ef7fe064
6e08a2b6cd8851d14ab9a58bae74daec890d1996561b24327e71fb0f84ac63c9
f9376b0288d353821d96508f0af19a6e507c92868515964b1a70cf6bdcf5a521
001306181e6819937eca9a707754c8d9b3fd873ed5d3724b7693d4b0d159977d
21fed2ee6f00d49eb2b12ea7718902f117e1a2ef1adb926999a539a5f73b5fef
fcb7b6703b7d5e369db9dbd971b532ca3723fcf1c7f8ca03d59358c47df8cd65
fb0661af6ccd6dc92e3db3785de4ae1fcdf8be867efd4eb0ebaa54632604970f
70dbedda58af7c01097cb5278d232a9039fba64de08872c3eb69e3dbeef7b369
119cab244db5973e1ddf39823edd8a2916129e66a03afe679f805fb560b53481

From the PIN diode (hex format):

2026-04-19T02:06:28.868750+00:00
9602db65afe132e0767d592dd1b1939e827d1e4542c2a5428fa8f5e2e1dd00f1
70267f3a977f54ef32cd53a783be9f5ba6c087adeda9a6f4fb51cf705b266f7a
30f8387521ca2875f295eca061eb0efaac8ce51ad69e77aaf38dbc6788367593
da3925dfec891f7bda2a14dbfe83af1f73340dd31d65d57939448f9ca91a02d0
795759b8fa653173dbb28de04df966689581a24cdd5ef46e4624d890d5a187b3
44bb3a54453c0943b546b2394a26a4d415e68c3fe98c6ccb39e967c24259bb75
c5471de277a28b8b420c6d6e1ebcd3d930e9bd9cf728083e85aa8ec631d4fa5b
c4095ebaecf2589b4513e411cbeb7b64a2a6ad725f95964e1a5d8c36b2bbfbe6
05e093bac0971478b75f2e7a840139c5b14cd8170052b197c1519522a9aa0bbb
f7996d43aee9956fb32de485ea1b3620f383906aaf48470325d3d5ecaa5de707
24ad0f73d4674048c139beb92a88ffee049e983d7d0655906ca9e07342c0a0ef
377be9b5ccdc21f4f1317f5e397b9ed79d3e886c510e18b399da8f0c47eda178
191fa571c358fb0561137233bdb1468b4324064207f39d221af606c09b21a6c0
23b18efdba6a6c6ece3b1736511218e16823055756c75d94c90553bb07f6a16a
82d1ab573d86d5d4db6ead56223725cbf3838210810ab6ab0e8ccbd616b9f7b8
8045204310f24185dc376c2f73f862668c878333ce78c1e85c640ca7bbdced1a
ad9518d3979d3fad323dbae8bbbf25f2672c23a63d1db3a9833d5eb4b42697ae
e7c4dde6bc11125d3ae4cb38572e49abb9539ab6765014315d02aa5880e78317
1518e1523cc0b944de60e660cc8042be22a689947471a8a81b22ae3075196743
5dc55c8d2f0b236f2d224e43212a26fe1a2deb8d6cc38c41df3a229ba0c843e9
1b8f58f26d9f30563b81710f19393ed7186794e57e9eeecf0402343db9d5ce09
d871d8cace6d83f3d37a6c1249fc7655c540c1e18ddb0a519d3effcc6ddcbe59
8fc9e02ed196c4359185e23dfb1e5c133d26248729f1a74cbd4c9fba97894f1a
8ec381e3f525941d9b1894b8ae7517bca94d67513e8e35987665e4c1f2d37834
73a8053dbc519dc5f556102920033e807f63c3d224199f710cc4d2a486f29984
cea72dedb63e5223ba2928a8874aa93c32b7c41a40c54b83a80839286568610e
0a0b7b327b885af623bbbd68c5dfddcbebe4c4ba8af91557b7a47b602af0c0a5
18ac5d61dff5d4a6459b8d553a187caf27fd40edd3225c5f1c151cdbf1c432f7
5f1fe87ae785e3ea7b45e2029f76912f37bdf019d62bd26ce5ef190fbdb70167
891c554644bd3707b39cf23fa6fadb5c022be5c013479faff04a63a41c28d2be
0541143e3a5a8a7b837dbf6cdbb23faf3e0a568d0fa6431896fd4b370f25d6a7
4e83fee58665014f6fb90d211550758978cd5149f7a555894c16c3179029f9b6

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-04-19T02:12:24.473974+00:00
70435865191721856138921463468628435001451320678911
67417343205584061722753308589153904851214405979850
83954739418462025620009775754110238486015155578156
92354544330874393437375145130659954098943774607029
29137962728090473187220318151771004582206877543973
88383764122645493568116589964583594301374113995421
09304978052056268907516555813460630815514513088798
03306518479453289585569408216652868310440401835276
66246446557778887216087480498617766333525330429119
50024661827393168352442389212980817952518134301304
87251017948037938419724715345604779068373601073803
39746321693601930916469387933477639268390974315584
62399653234359705314127896550792387681620674685061
65492677597607395473037940117511964238455096654692
89509892411349919126622326843448692443010835428464
25350112788409381748893614554703350221438023983236
87197571826275120810197602167412016266030939119854
21701991568802354574522604931954123387222468619241
89629201200657293315255067939136287036071827805297
22110375020753074759245630890282944523280598004596
83680910864192009429945279925509311170900771069509
28714507601769806055395721946199154879501974006158
48620426566584473410790366330469602056684680241590
84920006800100118998029786496003838596724551642700
10086282368174856539741637132550862736502613153272
99550702368330295080431054108024463433215075261207
65330019062430042547265412198479356214751847768951
25331100587877466713370223622646055365576559958382
12592594545785138150553599034788962501069775080946
61792093743190342678767084993804511512887524010924

From the PIN diode (digits):

2026-04-19T02:06:28.868750+00:00
50020175501825894577475830253069669465664368001238
27585127845083673190599166923573696681129138112248
56173340174960971472402658197041880336541747573737
31234220317531155213290121576843566926022187898401
49157841770204492962769410703644613579688758846960
09678170785774386421406340085703946689871797712919
62393966120910308848895640086233704298499196099486
88556919172300626673149549507826934054788705478692
51202083954622320157977776230082775193814934697011
87530967744911794533275432314406757271033770930736
73151503647293579085423604585261250685440869156692
60552381334927945723585762360881142479534312716120
25316513958805971914518977703967360666075734260692
55336692357742860608105923548118240435058786999348
05838707610630718761341073863455373130162910827114
40228584286932671665335508471598024035315120939200
12678726734924515763735061868791370344356661297969
31619480803851749688171893585687467371858354821880
20499302708828312321248260928568969628669034663748
16136868273474481725036793979241471135114534786733
42382645410895406558345560672743880959488659291315
25576224034826580402526185091309312208187318859764
93411081576209908943465096534533613092196138363541
67768976598651377926429529374829552448847417238869
77038162425352180193205215680561888157978616413203
62282799953625591312966434533267458262823586414068
35746960508396266497753168085740010497141011235023
36903587890497968638218783642396429265247293976669
55418558242475396434929528212896509531223323690259
18454755892543082515898301033728857068895507795663

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