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-06-13T18:31:28.931741+00:00
c73bc518be73e6230930e9470d9d82ae36d74a1edaa30ee290ec69f4c1162b86
84e11fe8a3df1e9875ed7c5bfddee94f0dcee89e44623b5672f0c9a56d0279e4
5784d57b6f3d8d5607a81e9f9d50f77a27cbb4e4538e7fd36dbb671b41a0db80
1bc7e5c21acd53bb4040068662e900525721da1fdbf4d4bfedf7579169278d47
0c98fcef5d44dd6285f92a4e6586e63aefec67ffce0927e6091bedd86a159cb6
0e9ec84ade4a03b189be83f66e98b16fec01f7fec0f1eb2f2d6e77ff89062f80
56e6c4d38e9f53ca8206b37c1f74570e056e852dca5a89a28e7032621486fa4a
51b2c8eb280a8f869e161672b36548d0a81c810c53f02fafda40d72cec84ce2f
7fe131b8e9c01a632784f7744c439a46a00acd527d89aee19fea481d7b33d255
57a0896c861e0f1d13eb1d7cd3e93a611651e2a1bd6becd75fc3092cb380f6be
ecf605e1b208c5478a9d067e929748ba93e645fb2904b2ea4ef067514b67a901
a697a2f5633666c72eefe091e47bdaa9719426e9fc9b597cb581058032ba04f8
bc983f07c03cafdecf1d55781f662c86964fef503a317cba30cbc5fe77643631
8ee88f37b3d4ecd2792fea22dc880b4ae80c3880ebe2932f8b4a68f013636078
04e91377ce59f9eb6112e3b2a90949d503f30522d8e9b2bd4cb0fad3335d6851
1dbdf5067522409bbf29748e33887c2a83f620d1520790c759b82d9632a44992
1035443b6e512de3193e0f9b173c1841298691af9c42f97a21ae68ca2d7ba322
ce9c750b6a02691ed98b6f64c732d1371bf0e4e16ad728771705c1b39c8463a9
27b09d9511d3ccfa634f2a4bf26e5ad67915fd9c9212f84cc94dec4e4af429fa
6b982900e3c716f9ae133431703be415cba631dbfbe60839cd059ff5dcb4049a
bc8a9b805347437c3e157720e299f72a71b99899a219002d348d8917ad71982f
d7edfc101a408e5d0a1e803565609784854cfe1d5a4a273b64ebaccab835dcfe
483233424f998a1b4399bfa7f6bcb9eefb72315451303bb5510bbcc68a83bf2c
80153eda7a7bc4e9a5c04061e6e2026ec08cc901c3e9720ce6186b98933b70cd
672f07ee27eb53e3c73a41699e51e60d67d229517c9b829c057e769302fa2efb
8d669b503d41c38b4f8c908dc45b3495bd02bae178b121d29910eba4811063dc
b3c56fa183e9c9bd2c320da90bddb52fac72652b0c76a406b8739dff3b8c3722
556b3b18c000c2278466d20a5e28ce908e14333191a9ce14297ef2ae68d9ff21
d99f5d82f3e6866c5876e56f7aef6bbe9394c62f7683b1ccea08edfbbfa35b4a
b69cae7bd9600ff2217a2cfc30308c6bb66b2d40a37645852b18d6f40c71ba6e
41db742dcc3f47cb5ce33cc46b60c5fd4f0daf3f302db53a6177265c5010de8c
a0eb254c5ee99e0eecf28e2375f3eb15f0bc6ed049caa71ec6e96686b3601114

From the PIN diode (hex format):

2026-06-13T18:34:28.531150+00:00
bd814cfacfddcd7c24dfc43727d05a545ce2c645f64aa36de6c43e6dc19e2c3c
1b72b8a02d587b5b58f3e432026866405f143eb9d2d2c9fc3e3442911f1f86a3
eb61da56367b3a210a940ca1bd492303f197628d209fe968b1b66fc1c6294968
3a9afd9b5c0e16a24132e3d3669bdb334f691a394879b4569458585a66440e27
a14c4c9ee9a304f0872f63d6f35fe24280bf3c12224e68d601af36f26a56eb6d
e9805032f617d066444097dad71e57d635bb0aae78f19535a40d9bff8b433113
aa02193f12212c9a4da84ea08773405ad66ac670d92b3b89657e7df5eeebcf6f
8b480d25a8de0d12f0976a0a55e57ce5de4827c6489468fd5b1f2e3a96324a7a
c09d7801f742d272a62fa5588dfef056e84172954485338098594a4e77e795d8
c161ab34df04b75e2cfa08fac555b6a60ad9c64299863c424d6fa1903469c05a
54d7c81bae4be58b9777fbc4f3f3a7b74df75e40e1363632bc1e06155d47cfab
640af77d00fa7e965da187d56d8ca376b50b48fb4e7e2c0c9a8d3dddb5dc0d61
8b29b161e1a3e6f091fa6a40eca10515d328ef9577fb2dd516af3aed9b273e2b
429b7f41cfcc4b437f85a42739f96b945000c5aaee691a9479b507949e979650
41f723ce364c3f2552cc52d2469868464efeaacf9e2cde9336416798e417dbba
23791087daa10585f2e905f625524f326116477a9890871b0ab2c290a4f98541
8bc46a945435ee642277c7eb52aef927e4e56bab8e12dbae7afe7875b45f68b6
cfe1b46611f4b784f41cae3f723100b2435b3f6957315b40aa802d6e98432c7e
254206e922cd33c6734020cc14ebde15fff2e554aa132e13afb67c4a5a1e7f5a
b863d20559007454ff2a4e82174821dd8bddd1c49c3db361c34ea681c8fe30e3
8c998e0739075c2a5c25389915c1dc4cb2f0472fe8967fe68c9ddc91ff5d03ba
41806ce2eae438a05aeaa28e6a22d9065b526bc12d01cf4609fcfb77da818edd
0c0b3c0c589b3a312da915e24832bea54cf7dde500b67aad60daff0b2ddc4f73
7447f533b5cc1feb7bd0829ee0668fd0ebc45d3da7a4b15ba32d50b43b6e96f4
5b25a92218725fe6094ff5eab3ef1c8748866138c7bb52a88bd2d2089fa6e4c5
a73bc2cdfc4c5edbb3d87a30263a66a5002b88b0a61686ccbbad8d13bc07e884
61b87001cfe68d97cf829f92f0a73fac64a8a597f10a383a7ec58a497d0f0ae6
0c43dab85e96c9bcf3527ada5e9bc3310b64e0ab9dde3fef7b537955a193d1f4
24eaf05e41f946b3b06a853a16a40bcc0cb2061933e9bca59a42e921d9789de2
e4a263d927dd9ea295c02d17abec16e718949d37c519c60f2b7345927859ba84
9079503f598a97793e323fed2b4115bfe56be3b5cc3bc05c62ed640744aa6d3e
29cde4abcf0c4d58746c168950c934aa8573abc55e385dbdb9f6e818c8b98a66

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-06-13T18:31:28.931741+00:00
99599724901535094871135730745474306314440593224334
32316330521724917913586898598614650902218732231161
41860768305957802239808342270987032765602827999426
83876464063498008287333191874505394171125293689833
42780134580309390927062156821458747403773790311052
77110192474510193706472886964259833006792431168714
05103345903762421250982034748178401043345822221479
01726828291283477564443247274984922699393216766754
70601082253774597229235185876037083430152919292458
97228161890795950944792890057808977138570626465172
86476941047878038175036901665162995402994645236913
48385589248129052850860488526307926075298520310244
34507980584924864897190054494243557921473436117412
56284747397404199996200419198997187869097303053478
89767651930481298906173464559141164251362442313282
07449989844550506473461653685910814525621555236024
65413445755666223374044523633456171106020530391100
99505527064019230593795632996939765749179979427510
90212156461876777874410752410099227419524912592166
49085705598004548838552883716724622119325342138552
53622500455241372373135247162664429310302853019651
32337629907439590072845372505166795338276753916788
85144984814859818111889838319144282162222396659264
97021092400195141224075247591203470739839958650558
81130341812455305605261847024641025580616595397940
44419691524989028620773353166429169979971161318944
50136911814772140143121864068415575940553485075924
92009439320210944044422051494569204126740433599330
34088818112207904748984718317708916391748256742396
15332244484840078207456463186933432412138610651645

From the PIN diode (digits):

2026-06-13T18:34:28.531150+00:00
89297624369655399084929869746309966209935844602714
84604588239188500204026495206285625266453131346397
86542358331048126189733503519841325904778211939841
73045854559214226265500255517905265772218086488888
90026814396176765863043547999566289160183478040175
54068609288050230268645130875387107420495364135539
67491970022563183344547768786035156490069812435937
01262511397213376813185106108524723998724804913146
58505074229257200166146647658841866514496833512852
89747819499397715204839444089785826610986653346066
77116144520592908427747539511996678377946454545088
30062193717100102500265093613509406318811172782644
12544161811397394177976345066461052140491945227558
55396243665527657567273364395707488000977005264821
81074858515080653554766337828270520470787058444754
65035223863521163561053305378279509722712252443527
10789444643365399606488453003419998274390771421874
22201780950482800217833228746314490078679163058749
91647028451052674426376606345198156432202184701946
19758224749030279084990589001684427830237233399656
61799795786629484053420757079242923756532193767871
47502740574593038665280856609062420634069182079345
01700919294212116012885558494569217250906576008222
73961145791516715181312330580243969361676477916345
80805910509137693424149509797928357234975699878268
39085966976759947694792248385802650043367666223487
73411988073297841201415130594667637200686551105658
26973873251510126784945088822294559549110071576323
83218561473694657079760633582264111278062551886554
66332057629939586249924523712224485755972598154315

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