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-07-22T09:46:58.985006+00:00
a2424d84d454e158c8c4ed9e4a9bc77c726c523f24d2541d90b282c2f502bea3
d2d126bf5c8c36bb9905083e506d270f3d28937ed623a0c7a9796f3fbe924649
2797ddac9edec683fa89039c8559659c753c09758ac5395a05a4250e8a343a32
f8a56152285fa19a84df1cec461c64af13270158cb40e6b4bb5b0ec26de17fc5
586c170e8c7373ba50b0d3f326d20adc2d066aecfff568ba6e3d6619494b0f21
3810e93443e1d433dff3242a2130efbd955604ddcc315b43bf68a63ccb36dc9e
4db3886ce72b10617e91165982e94dc71e57bec162391c28981c5b36bac368a3
3c01c062c3fb07a36b9b322eff8b3ffb6d13aacb6282eb720fee4788aa51bf76
f42d1bc6c5b3e41c95093f9ff7426bf219d976f0d4de30916f6d344b9bfcc170
808a918eef8e036c60b77fc1f633f4e1c0472d50fa119e6083679ebc43e7a853
e9b668655ae29b4c900335bb6787f5d2a1bb7e8b2f00c0e9a751f6c035ba02f9
a916c1279448632b71d2f2487fa06912d0c3d63c35942f52164b9c3f66429740
fb5ea20492a040d584c76ffdfd29a77b9833a49f0b93e2714112b57bd27f8e56
9b82821665dddb530fd57d4d6db487d451a52855f933d0cf053bef255282b5c3
be046a71be9aa8ad64fd1557b7b7d26dfdbae748d0fde7d1ffea04e60a96d96e
9b1faef95d124a3df966c9eb3b0f257f7e479f6f0790728fdcdcafef7b9edf4d
4d88d014dadda8abd80d4a703844bf8411205bcf493db8dc35d8074bc40b873b
70d88f5aeeb3f6f2adadf6dfcb7d1d0849a9ccc775e589bc4a427f1738695028
99d61222ab50f6ad9a6ae5b41aef2c0ed3fe3c6a679185ef86ab5a5bd9b47fa8
67d89f3bcf01b4f3909e7dfcf6b851e5d71ed7b00df766afca11b8752716d11d
6fab42f6532c4c1ba2e63087444e37dc30450d685f9cd75b7c435ecd554f4b2a
f6d9090c99006d2b5125662c6f98f6dc9b4a3f9d691f0f38b6e56157eeebabe8
2eb411101f27c98f0536582236285bf84646abf7ab04725dcd3f13ab4b199b52
5b06bead2e72c1792ffe64414776e808d717304557f702697cd1d5145873ae97
899eed2ee5bd349d7a8c3286ceb8c63933df0f2495b54e66a3389ffed90332c4
b2de8aff7f76e579ba618f3a5d69cd0747e51678cde5e3c41f974dc9e25b0fe8
85db84c8b8e956a084edbbba9911098f35e34e32aef8f782357a9211690cec76
d199cd7eb192aa77f958e7e52a20eedef4d7e70086487ae87c733abd6624d255
d4e56c10eb759c7bee1cd0c09de2dbd801c883731e8db27ea9a4e94edb34c8bc
dd415105ee80fdae8a85bbd5b1e6a8617c6f78cd2e1a687c06d790c2419fc305
81e0d3498f647e88af2ae3560dc6983afa421c633d8dd49af76590c79307fb43
c79902fee4c78f3bd2c264cee5b72274c831dc9582d55bf7731561dacf94f6cc

From the PIN diode (hex format):

2026-07-22T09:39:13.784330+00:00
3ad366ef8e7bbc19b02c49c14994561da47fafd962965615bd8cd236c7014adf
cc7b7b11f25bd5e3aa4a693f71c0578f167732708bddc6a157133baba00e47b3
2b13cb5366a4fe157e215261b53488f0fc1ec48437b3944ead6a45bff15f0664
046f046f376035fde27c40cb4daecb8ecc9e0ea0b1bc44e9070e0492ffbb00bf
a8d7e8ac3b4ca669224307f3c21a19b4ab8a30a378112fec70a86d301e001cf2
167b5340596c15031ecd39c074c395424d4f7ddfa77d9fef8449e6ad2adfe676
e084186f8e9076dff849c92ddfe0976984e7ea622b7414b9050035fbd831d25b
361a0a34b2acdfa44f9910ed0a6202413b195d3d4ba7b8f40c8d58bdac0a7d38
228d7dfc04837a5ea90b7c6ed2050f8bf3cb0f28b757940ad2fedd7248d802e5
ce8f7853c0284a2c5ae74537bdad815370ac2643d3a36c36ac97ca3c08bbd97d
07cc2e609b6e933708506df7b23eb244ce3101738c3d9f93620fd27b96a970df
15d625baae3d18444a62ec77ace056d40cda0d3cd4bd1aeef17b7393305b40c8
d9beac9b96ccf025443da3b25034924873dbc3947df87f9b4a48199984d1bc05
fb66d98883730f3224016ce7895146e7a96a1baf2cbfa54d3eda67ee58960cb5
f87a66a501d2f5e17c2216af55ed766b3179717093b49341e77b8ea4240feb72
b4d39b4ec7760e431db30f9872539ab15d996d33a165f7012a18239bed26e21b
ee1b98211e683d7befe2d8bbb002a0cfa660812e0aee38691885d6a41f509674
e4e25a841b466897ba91a42bb5af32d6dbfe4a19322c9db79979479c50bf8f0b
307c28c5be9c2864f2e2b32995f8d12c8bb70e159dda20756fc92ae9466588b8
3fb16cbfe6f2d96970bcd0b2a0105344bae626fe07aa762c8d161a836c6a066e
8fd79efe926aa0c255148a9f8e41e5d4b984dc2d294725a808bab8b2b2cac1d5
4f02eb8c95942a4dee976c8aa55337624d391e7f1e674eddddde00e48a001bba
e6e19843356974a42427a38429b3f64c464655275b0028b96c45aa3cc4cf55a1
376fd1638a70aa3688bb15a8ee54b7d5ccbb3d36ebd64511261905dd7a546fe1
e50fb15233fcf11203f9b93a8d4c7e9f44ba7784ca78b2ff2a75b0e60f500fef
5c0855fc3a0fc10c4b91808382e4ce5263d45d0fdda7ba04a22567bf5929f6d0
cc8de6045d7e6187491dbe6bbd58f16693f9559efc1b043eb70c15decbddbfc8
36cc8d4031cb6e401aa95788d33275bcbba2d4917320db2164fa6e942e35c331
95c0faa4a7e754a2f1cfd7aa27ccc9fe9cf4a252c9c35ff9df445e624c7dd340
f60f1a93152b9a1b742cf3b354ba65ab00af3c355b0f40d60e81b42dbd64d759
8cabe17f1178c3f53bb2ac998ca130c7bd4f53304bb7bf9bba02f85b708bd21d
8f36e84c7472f17482aa08fd69d4db575f8c5841f878e796e423034f3df4e32d

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-07-22T09:46:58.985006+00:00
62667732848896587455992414088263368429447830940290
63389192405487530508628009391561404726356099692111
63904670733951725898313703563389015617600917389757
90056437143852585065978240956154322870280075193901
88648087911494092797880823144015158680763810450606
04861061022573751533561652675136423348894986044991
67910466605458777936084316972645228930779930879093
98572840522891548695046360019298950763075550463963
09197098301415713670819118452798977928490963596607
25184845110952755593122838454242030896832793519271
45801758963103588867688382040190557644035387033561
87263947009267819253860269229339487299431372276005
18956053484782227556630266516494620446606432991141
67235251645911471365188123274286553030220183152577
09803581654085510559378230819590040613905468730021
87838309867204105010553174931874610259153727267159
11074414437523587777362068711374125668913217329173
61845307759611355912439079737325290873699917378874
66272356058040531834718073540680264414600603453334
71909180276803595901804458258481307613027517841739
22291171668344762762483568785548691304955691246794
85797542091253000943813702441152557463570531155682
97877146801716313943055488345440917070717104149363
19717525558291069073461493214700657118082348698702
05242088157451375846895257224050348498575115364981
78026356590350967838271821869743589305077122209631
51779115333284866032878653170943537850743053224617
05121853267746701988423200347222241558890236850816
17562328925701311530417826696478528865810528743833
87776897241120462604240644946559950529734300263675

From the PIN diode (digits):

2026-07-22T09:39:13.784330+00:00
58024223882576447393734886296427759850862189405499
01742323179170740563139287432219501239986187195971
60147179431983026421263382978152363096325579487873
06699195060004110411559653246477744258146077886807
14044687009168725976660534670794262580713848632017
47126809483000282223836489082103305792169549667779
25672559327373421832241142441873455105329843162085
05005349915426105278726479531610980265592593617567
84124188897210255634412504312294691124100515391540
83874810147202432083924074449069558973298312723867
63085472516008872507469655104755088009786278684901
15406159479815235069122137867461246874981972861213
60892623154748916490725550376861637880524672159548
25275574722553328805023631151550360108378170690627
75449165776203885012812202650124342275851807492113
12478047652342643615148055789918146729791552148354
77935309516101014224355538272752333004612387760260
66962946105605243364318050169032277004518645644381
75507425504457835321715680914311482440979056400079
41494439831421573217114270013684637708910512887860
16836886380770184441222631080606104358460660948520
38594265853245417137680886847878937902404948427751
08386583559877573027300378003800278652675305166436
39633241797670708539910040850869706096856155119938
12705436872168848387615469173825052284111577825118
03855841762659688619322078421776158015920885581593
12754528313082999315678604623703918941410493269735
73299007898802478558270462831221915441644910642669
87365017888762451532330010484653954949926467846270
39566282959568949876256415264721435427164479848601

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