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):

2025-08-29T10:47:53.345399+00:00
2236722288042e73bccfb126fa3998146055f930b059dab8a103d04ec2ca163d
02e5d7ef246c3ec1828237ce0303c57c3e6c088e3309e49db7a902b1f2b9c98e
cd8e8c5e70e84d062e32e1e73d2898be94e013c4c48747e8bbe975cf92727ac0
649045d0a5bcdf6a24f1321cf1a19b058085e49af8f9216e5513210c96db383b
e738a567b19ef12490a391142776a657896273a59d207adbe811b2d6ef015769
4857a2fa8e021d6ca8f4a6e581d1930af2669401b7e7923b06bebf4aeac05313
5cc5fbd77a7148255328e7a2c2a6abf62986662020925949eea0d111ca92acc7
5c090fbd9eb5cbdb76e58887174af74d05f008538984eb4dcf3457887344a823
4dd7bb046622f9602d5dc410539081347c63188450b2ed6f2a546651494a354d
532527e1af36a641b78d51c336235c30ba1be0a2bfdd03a7342df9dff6b99a5f
6a641256eded3410c5573c87deab51eef5a97dc74b68a004cf1de6d6a6a3c884
334e89508260ac12d44def6d95f1d30657f0feb50e31b04874a43914c6623bd2
ea940590eb33ca433dd0c9bd2fed0a940528223fe195d357b641c058e9f07a3c
e0720bce866425bfdc22aec42ebc0e421b162b65814264f6599079420df29832
f0c4e0eced81333f74dade0f438a3d9d5f6e1ca4ff4d12cba354d74e936d9844
72be17842b1fda7b439538f8455fc5cdfed4e5cab8bc04cde5023ce3303c7d3f
161298b5c8d5fc29750e0b34f16fc487945ba6ea0ce991eb3d4d492b860168c2
f455a19eb0849541ad4eadcf5a9313ce821a445b1bd102655853d3a0940f685e
91cc91850aa226c2b4f1c8fc9e4bf24786533c73fb2aaf4c79aa77b34721b1a7
35f9a88f6a8861bb6aed982ebcb9443044d85de1ffaeb3a165ffa1c15666ae40
2b0029ba2e3277ea19ff47392cbb4e54cddcfde5625366435960057c51d3b486
1b441b17c136d171dab47b404df757d8587dce048cad92308bda141bbb153708
18d3159debc93b8cf85ac2fd1dbb8574b04ef16ccd00ac47131c113473f01f62
a08d47d6ee02dce841ef9a9e32400345dde1cf6ac3cf41fd799f1866d397003e
2e095c6e283639dffa7ddcc508db23fb87f76d584bb28325857af9a2bafb6f69
9a1b8f79ee41dee59200a0695f843747e91dd7e8a2a1a16bc11ec2e827d8fc6e
53f6f6ca3888c43b18a92f947ceb69e7332399572823291281737c9fd412e9a4
a95f081cd9c74f429f4778c606c4fbd31bd93a21ce11e0193cd3e60bd91227f9
a2508e6e3befa41d84370dbafc40e6c7d1b33377f31d0799a5304e23e72c8dd7
2940b9e9e5f0d8bf8eb2b8ff8aeb3d6b3ada967cc4a71da88c62a12c6ebd7ee9
c7325b01849fc66669f8c769b82c2b08b9ddf0bc045b605044706a0970503318
d597c23e415158fd61b625f40552a010ce7ac43040f7859d9514b9143d0de2a1

From the PIN diode (hex format):

2025-08-29T10:47:56.746263+00:00
2e5529b20eaa5fcf3dffce23d52fd9d8f25dfc67d048c9a1cdb13a63214ea335
5dca17cff2fc88d33eb3211f7ddb7a2e605e9d230829d73a3d2f186789a292ec
08e0156d8a72e68c5c876eb61f60d2c87c35f359b69788a1e959247cab6a5e3a
694a4790b8e960db635c2f7a325a4ad3e4a08efc83ac83b7a5d05aa734aad3a0
b1e2c4a92a3035aaddd6378784dc3eaf7c074f2054baeac29f465bbe6d36f322
f5befb97b5c52a8f09394e1755b69aa4fc049048d9bbba5bcbfcc72f3032bed0
84db6f7e35850126de0310f8c574fa1cda659960472935a61d8bfe55b1d215a8
50d7a7b1c755415a239b5c509ae16eef0f2e3f911f15a94af3270d65ffa7b457
57559ed629bd36bcb5541e98acd0e97f92058c49f3cf489a5fffce56f476b748
cb6efc351f2b0c653b4ff5f6846ec66d7aa79bc6cf10539516ca2b071a5c1596
d2f573b37d2b0273c9b90df6ce8d7d0aec98f8031d65fe9c233ed16076daaf17
631976c4d052019b6801c21b4e3e5e7856a6bb7462fd346be3ece840790ab132
e6fab2c5d3b8cc2387137b1a43657fba6738c30ee7d473240b3e8249bdad2e04
dfd25f9c4bfa86a11c93d01f3355e7e9edb679b6a233bb05045356910081aada
97497571d77a1fda0ac073b12521754730634e97b858b7eb01b2037923de80a1
69c6aa5162f187c6eeead74566dd635e7863b7801435a69220f438ad577c00f5
18adcf1cea219f0fdf5016ef8de7355785c4475c12c70a22f1b8b3406a701736
df248f81c597182d1eb7faa060accbb515541e5cf472c0c07478051cb063cef9
5ebe0ad30cc154aa05ac3934d1e67174f97a992b9833b2fb132f9919b69306e4
349f34ac8c81ba3a2be6b5ba3aa4a987bf767719b3dc5f0d0a4573ddc87f89aa
dabc29685cef7abfe7493b9cd9b244ebb6d53bc0ded30c6527238cb127eef52c
9d3379d59bea34623a79906c9074cd570abed24783dc930ead609d62ca912bfc
563f1bbe335c06b1a924460bb16de7705d79e2a9ef476eef640d1461a81f1c5d
3dd37de3f5b4ea0ac7d483560b349b53724f65f24fc7b0c69fc96a151ca4fe5d
ad1a75daca8f751ce40b768945d53355718bb364921438b374856667cacd958a
03038492509436241bf1617c28b7a73a97ec70710b388d909ad350e3fc995e8f
7a86f860c198c80a477ef54c6f54b07caa7f2a28f9dcbf22b8295bb943342715
381cbe79d53e7896811e0c8d602ea30aa1e4da65544a082c8e777e74ae79ad02
18c4485ff5a36c77ff1ecfa5bf2eb22e7957e5e3fb25965264f41c62f9148fea
ca5a887c70c22ff7d79a003846bf059723be0a3832ba78c135002f368ddc1c12
a97cb9cbb8197669904e9918d5c72fe34e808934238f7d5038f9a63ce87b9fb5
c594361fda2a2624bb611673601988f3f25abc589a54b20c9347a82b5959b210

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):

2025-08-29T10:47:53.345399+00:00
34541434360446158877385752209685487689846103789422
61023608629330305503039724620808425109578369027785
42424094127706465061405290481996963571871746142292
00446965880636502861550528335433108519331250565956
65037758364463452039186687379815655732221778018705
72876242022908686629471002480183465906909174928319
92972213723783406294667141340232324689736017467299
92091589588118363523747705088337327752873615686835
77870402349645939616834429522499243280781142840281
73745377833739755466658341819554359248862762910367
52458554950600188652169787603571816925997504600429
66633251783780309672187709490687811449767216645720
98985948054451676189471048054034634987826592882260
14113400379134749646881466272243012966008944216613
52509629516316156738615795102864771863847847095268
14902332433123674956699597848804026048602563221852
81411714115211963548916612456177734334010494856158
76324965737873904719302668912702018883604815049445
45331062389480587571348360154275762170197971337767
53684306369787065246888568486893747961016193860274
64430041864650192571574487788498830267899605248180
34276827239354138023647787882504407346483920278721
55082421575940909429873316767808007271192817521531
98604171026554585064036906956521592402510062460992
10405457259708353509887578313733226286110554274321
65460060059532557129626161079330943910835636965924
69474824055135538740354118291524591864699508289979
66597120980696275833172560111839628042105964293255
13866499795119290753654878354441416485914278843861
07585024966729684098614410892699509101325998020599

From the PIN diode (digits):

2025-08-29T10:47:56.746263+00:00
46854178147095613547930372617758993378635393233662
79333125224696945735084158614724033762460821093814
40923510823196245389825136618936247106945805747144
84969992472250907460423172318365906752706077966942
48537055353262752407793284869459709190095434905181
97424309577823858254640444728786919947485090321126
53330138031697162801539671415366293985772168806777
99856590355592805410154663453121697439130167808787
85584189548881843052722746054073725495861883721053
31431201597932109809226755981683492243072692215015
79254302158513412510520329015635629618752399251896
82015504019427786294208666871698520764211077507897
84353519232667012786035695141536116230738973460495
56753461284731518582218262518705048386450029705173
17132231109215773733177148997851848883017803213528
61059870819835986902999420998328205366463256738724
00247328335915802241538733967192189910348479640612
23543643299751244530836096728121843092149292162005
28769994901012938470057257521316225343525178194753
25824706525952724029865843818658646935911819257995
13106915273770884104922291735956786882599212013935
40773944575121555298582144084416871090713147147396
57984543866327905192067769367011770912932169711000
13209768312893612580109931861152558314790179997698
59062128649373261743172811183769518513397900462056
79163302034938030332468048543627972440836758511213
11564144548053944322349693521071267611847624702742
40913484419185675239215628902162205029301241964663
10610184740844421926167421730224967295630819306591
46784621873750820028982043903624129447540056709105

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 2025