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-02T01:56:28.060350+00:00
efe2fe9701b96df4a5eff3e22ddd596d40e7004f3f4c6465a8b457bf0bfdda1b
9a7c9bbf6687d74ce2145ccd33179946c4f1c7f4635eb61397bb834e398cd3f7
4cd8c6979f198b6a3aa236a2f93c1bc33b05ca425b093014216717518bfde79c
bc12bbba31ff49979188968a4f1283dea924bac760f7e809c548c218c8167a51
41235080237edf34a0585afc8adc6f8943f7bf45ccbaf185f4798cf740901b54
b854099a0412a56905b81a1db137b8b88a43dd7aa253a7e313b8dec9fe4cd165
d94054be3bb04a255f70f026355a3496704c6547b780fd1d2b930e9d6d48e52e
998d5d1dfef177de41ac00d712a4f202e6e77c79fef54ae51d7e1a37c9b9c1c6
a40387504a7a904913c905d11db15ea58f8dd2a89a1d171cbcbb5d7c0ecfa532
3aa546830905776f37863c41137fc6aa68e08190aaa053afcffd00e31a98b34c
e98eaf8d7cace31b8222edfdc05124aa75ab41de5381ab59e7f61b94b5650678
a92a6fbd971626a9d5fd6e024c7c530aa49430cc2e5fd82ec0c8f5fe470af899
b9f3be50b98f3a915c7b3f3f713d0ebc1dde9bf02dbc2d5cbf36ddfa6fa35c1b
aabcd5124238816e3d78b86e634e09f8071c717c776716842ef6f607810b6556
93f40c1ecb86b604d89a5d33f9d8e58564deadd6f9f8fbf32a48193bfe4a58a2
9f44f283af0cb112ed816162565fa246c2014eb164b744d3befb718002bd60f9
410f9385f09947bdccf19076543805331102aa341319576886650ae35cdd12ec
cdb7cd56ffa4cd72b265cad2927f3f7a27d0e5c5d86246392a639161ff2bed87
aeb6d72c7e7e928067bb54569638509f83b6380c49ed98f2e24870cc60aedb95
378de8f9b7956afe19811fb8f24d5936d666c16ed0fb7a579e32c4794344169c
806baa809cd4d2f1381439a5c403bab4d4017f1cf7bb59d8934aaa2b9ef2c231
e0f4889a4d010accbf8dfa4d2fc634d936969c578b3f2effe9396e394e401109
b6a36c7910d864ac1d359099acd625a39e4f6f8d6d0666d245b6f4dddac8f129
6d43a8a915c035ef78ddf3910496f3af24fab6a1b0b443ee90bda34dde560a92
f89b991b64678435a2ae3a873e51a12f2959f043a51936f992baf4b143d741d7
13cc461eaf207e55aef126ea6becec5fcd87b6ac94bb30d3a9084540b0514eeb
80d627e3b5f2baeff2c6c70a3687e56c6f7e0ff261485117d761dffe1f6398c6
12113e772879c4fb200c52490f7ffa9239bae398231a8be08f2ce3b9b5a8c123
2720a50837f14e3aa65b1d37699aa0bf9e1835fdae999d5b0824ba658d959c3d
a6d1989d1c513e9a9b329758599b9736097174e0e2bcbc1ae96982fddf4605af
cf8d83b50b15f1901418f6dcd4a335910c72a1b5f0d55d0f948c489e2fc9b181
f9a91163339f079535ff04b58e7911326110e6b63e03334c158029646791cdda

From the PIN diode (hex format):

2026-04-02T01:47:13.459527+00:00
ac92f5cc9d722c8d63be10f44a5c1a5ec8f96f2fb44a581678e368a8e1fb946f
6f040daf3c6dfd3f79a6ecf65680b2e302b3af4e2564858d57542e3d74bd80f0
3a6d39d409c8b73956512f95f975fd2f0452a8547e61eb62d87cd35b916fab01
e8b9e95040bdc1e44c797597fe171bcf826726b42abaa1d099cb4ab80301eed2
07d695b53a6d4b73e6621f86142da20dec82b42b36e38902980e3fff3982adf8
bc7c81ddfacaf8f00dcc6637aa472a46c6abe57ce2378e5993ab7acacbc89fdc
7cc3400002d23cf7876e9203535d517c87c1ccd53877dd8d47ae844ca96b00bb
f7d864897639b332f7161f78aaa5737f9abef29c59af085373bfe45727e6d01a
24e7714767b2b58cf77216e6e16bd9a2cec0cb63ba1b9bc4e2d32b9d2e6164eb
a6c656c368cff2d8ca33a3bfa3dd73bfd2992a3a5fcd3d40711c3ed9519feb77
571c6c5b8346cd2342b0fbb9ef0d960ff652ff0f53673280fef6a336e664ceb9
a3b7331f28eefc50552923e3cb29af9686a4f175bd68367a3da48240949e0e47
d198b3ed4ec158bf86bc1318e6e6e25f07f9618610cba0af905057a6ad583760
8acd9a38551b9fd01bf1fa91468cf11fea5c98dd9e347b86355f5d29bde5f0e3
ea43d2574f9711bffb4298be8b5f629ed6216e646f799a68786bcda5e24a91fd
fa72aa5e9f169ad79e01e91f515ddd6a218fdc5a6a26d4d2ad57dcd911bce06b
f57676976fc0497cfd7fcf56be028f52faeeb23a0346cfbe5e5bfc0010d9d764
9838c8dd1beb64e3aab70ee1d383b565ef5aa0537c4827282fd82050edc3419a
2bff278b81a6301008c71fd01760ad1f7b6f73e5168da7768626ff933fe78d3a
cc22765f667cd2fb886b063ba6e25529b14b2211b54fd42ab63c8b8896327c99
b565b7455700656ef4269babc0cc941b3c91507fd10cc1a0242bf965cda2656d
51ed279661f7d458e39ba6b36e0f90796d00c511e9a19331c1b2c58bc397a6ef
7fb060655c0c7207d4f68aa5b17310d1896e2d61ca00ea47f0ea3e3a37c3fe3e
b0e8628bd85f7388134be56ba4a70e5ab7a0628118b8429126919be15d238cce
43f556cd2446f3e8ed2e198e028c144090dfbf9078112831585345bf70a1b2e8
e977029edda555d63b60a92e91bfef4daa54e47c308e5026876b7e682d83977f
c6c56f6eb539eb2635ca40da59c1f97ffe0f5274c4fa0d9da7c6f954409a8b6e
2db6c3b265853c8c5a4d43eee2524209d3cde470c88d3fac419cc85bff2c57f7
4ac2d77682c29bb6eaf53dced99f74122246f3fb2b18c4a2e93e3aa458e322c2
e88e3ec3757e761ba27c71104398304f853861c0cf385a7afc1fbf903a6fce74
4a630b50d194512a8e03395ecdca6feddb012d3063a3d9a9b71be80e9922c99e
21631b336f0bec924283b93377c5c4f4347515ba0e19616643755793a3d2c337

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-02T01:56:28.060350+00:00
51018509654589096400796376000168808791112754245591
02357620925123537096999994821951873178574076985159
25390658625462602795590566910948203303238139568818
87864973514536503879183169368699960997729424222281
65358028352652608890381137679169863321406444278484
84095404186505058426297755848438672262836719847601
64849059767437951238539052501276017183282943471457
09724653419329196572001864022421742926265585939864
03358074224473190529779465434168542923288887932414
65505865703109051911553460651927987004294470608375
00265279764275412472273034928136701771658329718927
48810106206942118951223869100276248310644848469546
92711053859080854358459223636313611488295545884592
91541163922770881866562910612084109978090728132419
03223246072911018647123034820454935133007342722559
74886259683175127718299798869562709401787700836890
13280289966515473353718944188456055117027052192587
04340110921883866414780146276322399798705742994597
43357482442626462803878486505680593182561273527212
96744955418349062529318477895402931022875850962167
68225628077028565620576596038680012728878947747043
58944936547701109141774798525450568739634657105778
64170982630821160072295344537237635879114109060269
82410967686921925320450450753682617680674489637786
10465553270003325362745835628161474189676525544686
77676519703075322685743807953582724887486908696476
81782839818698991054350811261597728123973199529818
17621940219632128273152746578652352639434485816893
35393265085578586691295505546091582453745357910836
86014149566166525728816254555051888955515409131688

From the PIN diode (digits):

2026-04-02T01:47:13.459527+00:00
72465714444199901674922694114780748822200468481111
04137560096321668628780279757837003341878446611689
28580957098357868147491747048268842697982491451171
01858064899376211751232730033880428661537484030107
49815809751598313420456213308043543702521463573073
88242913025570714270987124554289477122592495640002
60351046038393812435935619417174327669070087003718
57795022312070651527549056897508831591873926361371
03788140142207629299862755964357469700669886950451
63916315915342589561641328628159198728089131703566
76851350158215830350286354008563835131408085413541
75503464178904542261643064485814715279789388913488
19249507973416607544808766738855963854568527592745
70403192525852233453959341896787795117916652903995
98583310001121540420076574451470945922545801318193
06334390063873871788071818511192732427869002438278
58037090949100160052562700708314318101906083247239
40473280956554433939296648160899312396733123111522
41671834384763415834189502243607065966854177753417
81794282603936505024538101836987000110385571924827
60458027129360364301620109813950978855667910154421
09009717614749937897399551662776960192121407386577
15163710459700716258559562769839951536197507646714
90836098292484664538455593354067863670462542024020
64449144201740498883699112617819025865855996694645
91777084244842803835072604453151279897111081573853
64899327158216961357679884645439104582957801336040
90776782660912416372655691448774941830945582615916
18347043249662625864883494426295172618276224131667
52487933569792569022319144581116749911804881424203

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