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

2024-12-21T12:25:11.680507+00:00
0af82d1af10302a5258885e763c3528e9f613af9ee1a6d8237ff483e61004adf
dd758a80f182f4dc83aeb77fe8919cb30a6707b8d8ce9ec8f1f93cc204a9a2c1
1f845f43257071955dac7b2f7914494965a8d46909fa61a3a95f27b75ed4a471
296eb04f335e6747a91831aa2ecfff7ca955ab69094db2c07418b694ba71ed08
cbe20bafdd91c87a2f8d98b5b1d058849f5dbbc152b9d8ae183faf205d5138f4
e40c0006a8717ab71078276f8026cb616a79294268c8022fc00a22c343804524
dd3c25662bafb34e157c3fe6c31123389d1759a5ceb71eb90c07c7467f0352e9
d0e3a548f82d57ce1936d13ea68a2cfa90592b7da4408e2c52f21af8669fb6fe
8f5ff39539196a9226033410528d95c7906c6ee33c9f5d51ef682e1ab5919a32
4f4b97f20ff5e69c80d71de3989e376fdb2bf9acbf19b0284c6502a93e9ebbc3
5beaeecf53bfdd0ddee46267bbfdf38bfb629505096c207177cb7bfa05f2cf2a
f35783697b3a6f93ec1acd182eaa1b7b50052d8bd859e4470751d0d8ad972ce8
597d1cdd4a27bea725dd65d975408b64337b0e1860a5837bb01059d751055edd
751c3234698f471d90f079c2db7c69525cd16807d8ba5c0f6f818c1877ed5e63
e7773388be1c49ea72ef9a538154ec7787e15dfdfd93329a3163fecce26b2e7d
dbc79a4b107c7b88978b70e42d790c00bf191b8fee2b9aba2ed6e1c139f420ed
f4f3f038f63c7ffdc0a335b84f3b34abe3a500eafcb36a4cae1e7b6438c2a680
87510c43e9d30e175866fdbbc5614dbe6ded2b6a2a443aaee46bff63936aea62
21f8b2b46bc6614df341f7d378d6fd208a63ba5bd8fde41713961a607461adfb
484f08877023d6dd1fea76e06ff394ef56bbba5e6986bfe0b1e496c5f8379839
6812c1acdf918e71636ed9b35025952b1ed36a56e5986160904f83db3029c777
f7ab6959a6490683b7b6818e850f0688b9012247502399876bbd4a394cf20034
b14af16b5db5fd60ccbcaf4c76e996adc012087a3394eaaddb3cbe6802a309eb
d4c38db8e55a290e9d5ccfb83d63cfb8e8db1f2dab92a5896856afc173374245
50ed9c3f6319c30e1f9727132036513cc9c24d6b24539c4c1e01d118c16277e9
d51ee012223eb268d36108cf63725349b44c48ac92ed33f2f774f1d8e77075b6
b6bd6bc127d3fc6b295d6893c6039c1fc7e53838f39e067d934e7de396ba23b6
bc9313b3e1ba03a4c7d6a7e5289d44511e2013535c18a011317c67c8499e162c
520813e5ad7872fae3ddbd53150cda78610ad533a073be667e7f2039d82f6f8e
daf92b832de431e4d3566be455812bcf53894a7c90c23312419e3c4a599722c5
831e14955f04cdb92bb49b01ca3e9955e467460ee18cfc109bd15dcafafbbe5a
ace36269b10d67e22eb9a1c1b125a37f55601cf349873d422ac23686584c7feb

From the PIN diode (hex format):

2024-12-21T12:16:53.478681+00:00
d657f227eecfde4bdbabcf049f3236fb4e43ffda718ffbd0096887d8ade3a8d7
f01b9103c89f71460b499709d1a40b45f83f2e3a8cdda4ee768308a19feb4563
ff1cb3921d9602547bc1454b5e0debed390714bbcd73d13b94782eb6aec5f214
b4611cd489dedd114415ffd52eca7782c40c022d5e610f5852f15a93d9a272d3
c159bf943bd86e56807f1d776fb756165c40a20afe9443ec0ec12abb47b391d8
8c1736e118d6d0e94886c92ae0750ca24cea982792352b7ef0c53fe42a2a8672
7801fb7fd46a15844ca75b7f09d4f4ea54c1806aae0b32905d77632cf927548b
7b636520e44a1f83391fc64c2e2b15128c85c44fe8000ac3e2ee4e0be2d40137
104b0330dc5d8645b8c15929b6e769f25962b4d95a42f52ecab2aa03ae3cbb3c
f61f62677e6799fd4cc1c2475db631e18783816040c9dcd6e401125285843977
1ae5420f30163da4f12ffc97cff54daa0298b39a25440ef5d47c995d22b353bb
1eca66ccce705d29145da6b2699699bb432b098e774a56a308cf9b9b4a4c8e17
4d649573b66e57ff23a85b9e6dc050c16d2a02e017e413cdd9dc5c4b086bb853
bf6d36d9db144cbbbc231c06fd56741849d6885285cc3dea9b0d489c378a8e93
b5891f9ff4d3db8f66e9eba39166b6e955f9889cf8df6e49ad839e6fff7b4036
697049b466f4244b94b0474e2929de7264ac2b42a53baf79083d23c6504e0010
6e5ba5b7ac77e6a54e383a1554562ae9c631df743ce82e7dbbf9e6bcd24d4bc6
ad56ca3d0ef98138b5dd30ece7aa1dc5b2934037c8a2c7e4ef840943732a198a
0baac22416b0851563b513ecd1a61e675495c629ea282e3e482bf57c55d9e5b0
6a445cd6ffb067425db85a96ae01d03bed6670fa8066de317169891893e693fb
81b0b6acf4525108cde6f4689453ee7d8a301462d55bd21f8254470ca14abde8
2589d2e36cf860fc377bea8e845c67fb5880fc7772e0735496dca2fca338b1f8
15e6fa1454bc933bc94854ca328312c64eb5c1cade77f68736d3c8ecc3a46b1b
70ecf8954ab66c2845320589d0ce7cb45757b1e45cc1ef5d127fb8c3b1086b74
f5425f2ee3c83790fe198ee96b6073e30b882cd5bbce6e457aef027f1238b7c5
63173c5a1e63e3b914580c3d6d26dd9cbaafbbe31ae67d503528f1b71a8c8aba
6549bf8aa09709513ffae845214ce59c7291b126e99af40b0b3bccda63ffa447
81945d27e23e51a3e7a809121661e702edcc31126769d3dc5f2f87ffa9d506e0
38e8c1b12cc1350581c0ca6569c9c1e8f98310ab7aa64e4eee8e3353992627ec
fb76ba217ecff3e16636e599c4d75052cb2ecf50ef5a3e8f815c5e51bea1e5cc
70aad2de0cbcc8d83722480311d102c33164448eb9284519d9588a8c8b3167c7
1be75c46257323d3daadfc7d86ef09bce0fc98607b86695a1f3ebafe4e257c07

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

2024-12-21T12:25:11.680507+00:00
10452603026537363399958242599758260930557262970074
17382830317483274556791003078458609404696293313295
67371213499372234721207373016805099763699539839464
13411076795194037169244970462469857105097778921624
82488613081175452247415281778832599387938285742463
75329381561200066813228316203911283897062141660402
47921034956728693660370243757978212463951735565723
89658330851207997027038265724587255462663844448943
25646442448226025982439549572506463803521682414999
44081060599381044626814554507975511556282952585511
43729125764076010269625887959183911398038739984905
09083213192305428731052358114726244670272380054539
89710781735144892528743990673701176439005123142496
65312376168981059417285052054371294421942405829204
07869215112940241994991951369028731454832984193593
47505449990746259954751624233651391245211200912527
43435486469357325660279263538479595271650079067674
30230056946628358112671423880287979777900943064268
58740799470698337880079897776520323899869123195026
96169773727908351235311811488687869405349177509755
52570418937245421399107980374943300686529796447931
48419919710589667306318382294233150636850134718035
53350789745776005277740793819688757618507392180822
51487360900402630995418490411457928461998431457146
65370486759315556669805663992595143151391932548160
94770736835676300124939819301834627804970899148373
80767272465116121782828907933907419304479803563199
56565806254778255086358288471979860364996740576881
30321983922460174924037358224482081973201489832112
20971051601590022627325747114243314549860785294383

From the PIN diode (digits):

2024-12-21T12:16:53.478681+00:00
87397571045950547867134309043573682745035913701173
51096411696346584064183108615969992879462950028423
93697594135707208715594820468274972080972837176821
46193096120245949715888290476214938991485910862827
29191183862292646210486714934287717945402354247234
42171262765239465343269763424234142001270621327667
91270984932806741150449319994439843923990132743131
57319876464321184033967900109578110155167503489334
69849389418205899880906646787003746087603198032603
53769394719382493531299664011882333257192666154822
61644751777002527954376814245393347983873002129341
20936678055053876743094219748663085555747642237700
49158210873568915809928093094202231992750807848391
09542076878835280686162473368233615513725655384247
81373159430263450282853656107373315811236454051273
80023675487671784141140072436665597521086135988078
00161091658372196578565821848642984916604625878877
75987386611429568148702997784764556299320967154225
38117094362276332199811966300384499841404662724324
85760668927603669384905074015902122802491305372447
47297682728281080448832538482098913130847112617489
37370896552342329203882819141584506263567721208488
47597284503118987881931935549564072712497482084069
50053724808787779293931827849577080716669546554425
42079615113644871069220227185683979923609030998520
88126109385686758726258053408326403886017391386051
09816369337656144577385411115999647129489339628163
68091822970249180305954735690656937744935305299201
05933116712266787842518353383918863326025453968082
46809062432992948190611270128855347203170295490068

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 | Alnwlsn 2024