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-11-12T15:44:37.619297+00:00
88c25b86a7e4b82ec8ec00a829eb5c002a6a03a13bf79a0355fc6fa1811568e3
1bbfaed0522008e15379fe5cc39ddad7a52c81f5f8ef8d2a8ccbdad514b4c041
6c65018ded0e5948a620bb78272f6a61edb5b601a379c479174a83e88261318b
60790c02b650f48d9eb7bea223b1ee6a97640e59df206995674020bf3cb68dc0
ec4a2c89d708e460c11f20ad8a8516d60c084fcd4a4d13e63d6e3bcfcf16bf73
64a0400195342e46c72a54047af395f3a193bbad5bbb74c7889f07b1b50cc9bd
12ca2a519aa17e67fe12bb72ccd1179c976cda5dbf40ee42bdbae020a44bf749
a443cbc93ef09ef511e853bab4d18044c3cf447671aa369d55be26a26063a21b
a1fe651cb86cca83e22476f76260d42dd3de48c5858a797b5bf120e55305fe7b
b1d7648d1983c5cb16bda99241a7aefd5d20061e34b588718702d8b5623290be
ad8e41dec29a510d0ac45fa942ea508473eca75a69f427fa8079c18114b5653b
2bb173c18e2339c207637027a497000dc6125a2b70889f557abddafd11588cdd
c7e3708601a82200d31cc3492c980e42e04d17de6d6ad63515985b59d9e04db4
2943f0b9f061616536924689e830c17b6b1c880580a5be49670daa8b5939fa5a
651f00a6d1db599f665d1510fccea53655090cdd12e9874306ffcc5894ce09fe
be745fb734e6af94769e6a444492f358a27e9199ae7fad087bd2ac9ef6cc5d2a
740e8787d530e7639f0ec6adbf0dce0460179cb3312b76bd24520396e963365b
76282d12bc4866f46a8f490c1ca6bd84652d76a1b5d1cf0a3ce07e02f2dd474e
45c2af317d65e5d7a64dcdb63ed33c37079860ae2852933152f29713da88cd9f
d454bb8a30e120b889b2bed5d6f9d2b690b44e2143f2819b7aac4b083d3b7476
4ced63898060818dcb65b6024abad2b2ff3d2e035613e8132e7cb559b85cb1d4
46842800cfa29cfba666117d4e5e54ab43007f1d221d0f6e021948f982801a7a
c9ba03d588f1049f77ef861d98dc8089155d82257c309729f30024290e9b4f1f
5d2deb910a946ac0e30e557be53821a50bcd327b6c5e8337664cc695b459df1d
29ae2ed9da24f4d43a2d961cbfa4f282b68b3b22d346fadb90729d43981253bd
564293e71a2587408532a034681e809d537d763fa74e4c4ed4928d6e2b6ce04e
4057e842f49a1e6944b0512c670f57fd8e172d4bf25f5b08c8a89f8353da788c
8fe1c1a6732269fd4b003c7f80d2e6b4b55e0bf3710ed978d3d7a7f0f16a21e5
72a9d5b2f3387753dbed739c50c2945be444cc01070f9864fd7896fd139bc0b3
8a2bd11e902cdf94237d5c78c9f170fc26c8789d4aadc2dd827050e1144f199d
a0481c1c28b26982dc0eaaa97ff966774b76e66182d03266e3ec0074b24f9ff6
6e147b50631fb00c1d008cb9964627dd157a113b5e4f2fc682a7733e1d8c7912

From the PIN diode (hex format):

2026-11-12T15:32:25.816199+00:00
266e4025446ddc94f805a1983f5a39897a8f45ed0139004c5dfff9f972bae849
c68e26ec861538c9afc3db3fdf95a85fa566b6e540bb8dce023f7071e104b549
57521518cd126b3c306d9bb3bcd0e40b262f03a4f9a079f3385f28e77fe83409
12aa00025ce17d861666e498eb9e7f6a7849ce3e720da5dea931ef343889d713
67aa2ae4956c80a932694250710b26e5b21608cf035d72676fc57ec34216ab59
c0feb95a3ec5257bb9feec6c82644b923a6e5099e9fd4a34848991441670e2d2
de1488723204a7d5d78d11021e085d4ce337400a942dc062520de6f7cb20db9e
859eef2f573d6424d9e12f890a0be3c546f1308a7863d3e0d59058474331e625
2030ded2af72d99e8009e67217646a0cbe2f595175ecc7d85c95958023272339
073f297026a05b67b972f8d41448ea0e70a2caac6741084b7594e9a9c17e9f38
d6f95416a26ea61bf21f6a1e4bfce74fdd41d2628e51de0789b255c4dd6dc64e
c67a51c0c6eb21918d775eb684466325753af8bc0768596b0e364e4b69da33cc
884d51082c3ee6a2c3aac47cc76300b3871fe497a625c3f65033a96f1b5ea165
cd33c9d0adb4009df0f2365f3a5dfbc2a3ef301d85d3b22f4f5ee86a0b1b6b1c
3fca6856df2be65f156c7bc113f78d09a9d94658bd84cc9ab5c9b3fbc21e790c
6e696db9e8f5d5f862100608917de0d8b98cdc7f23db06f63d8f418f6315691a
8cf572a7813d3837be7db3d50ba73d9bc0fa2170967e4ce5c963c92ed6009e82
99173cf31e743e2427e1a39a9c702e5f7db540a5666fa4b30b7a4b2ca75378bb
7745a668ce4c917f04df9b243eb02f07afd65755dc37775fee0ed26904855123
bab367678b7da915df0ff568b827c9cbd0574fbe9bbfb5f27f4bbd3142e7369b
826bf3cd1ab45e96a3e860c9faa775cd74143a17c065e17dea2bc20822850a93
5d57c80e40d446e5309c276e17a4ddc7f842306dba6c62deed7b029fb7f476e0
d606cdb4fffa46e3548746fbe69d3ad128d50485cd23db8de998d315e0e345f0
8907b4afd069f370e612e0f2bb0a26790938ae36c80422c88a89bdbfd6df63ba
1f868f85c65243b19b86745cadf109642845cebe55ae9d3f9963f3f2e3a87ff7
29addf6304868c1738c95da3012a3b1fa7d57cfb061c006bc2b6183fc853d499
f8585ee34221aa92cded17791194c6b83bdf50e6e978eeef3d195bcb51c9c672
b51f305240357042dd1d246a18a168d4c620885b458d903fc71f87cf165dd47a
ea9127748ade2803c6e57eb321560eac1ab0db96d12a067b6bf9e4b660fd8a21
5cb66951ad98d1935aa09662f36e9a3d0dd08aa975cfe82ee56482e56dc5ce85
cc035ab8b3a2262eca0f6bc514990915c33290e3e57924438754a05d9fd9a72e
536126b4ae445239998393bb1334db1c5aac7bbc0980a15bb17f896b53742f72

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-11-12T15:44:37.619297+00:00
36949134678446006841920042060361595403851161292104
27917482320883219295576544294142402080926508010141
14897266328720394706978182016321962123743130974939
96211202828041588390623577065100148932054903643291
60824192744437089693313273383322120879747719611059
22911500606401495246709942840422496147877391871699
36590777811289184281546126031887142356510893916466
89863264757364676258178386802868956818137054578590
38629699622761012884083136189896457297333821239132
83052377004125319722896946656774933206305281361335
02819850449073426594548113109695696680321567900539
28219329208101594377159342355794079912396451001398
18904312365985228917884099123401683400289573445214
66772309065321529189778041678597970154467037489323
07283605286590730313703989579001310066895902932116
65548509121835670688480990169583527548185806686846
88622645537427730823725893421614353548995914987391
13049623567949431889368203509954911840451888720206
43731228668932014518618110602602717869947549250166
77826260550752967440824749825119365984873848328437
78908244807833672955227275086159161876993728962941
01820274867861460386191946248189849277703240006256
66021725789484716700272934291510022572302826228603
36045919342952283721933037244851410036411455793193
45451048069214852356336511502308943155027698498089
29417446365845502891643082395934704414576752188389
86664726373564335060520430285783251863677876784641
10430878648766543005687681440315874223457595910868
59318320404393661534057500602728808194111314206706
33146978561983155680944891680107155200205019559279

From the PIN diode (digits):

2026-11-12T15:32:25.816199+00:00
38106437680948056152639057372243690157007693148673
98423834215675956349689565028264874102631213048173
87822124180760480955798811384703646021569540275209
18700002922534220252582706207362141365694952563719
03704249082869500566801311387822080393140311972695
66227189928590629737238508300075465810805374523237
45682212203614500467411702300893765564104845929882
13325833584787610036473710119770483820994488716749
37324875145828091423000612904789811799924949283539
35570763411238609103851420721412627203650875174869
93265956842262106627310630757965984281073778859609
98789822819298334541199482327099371758880704890714
54787505513677810844626295709624999900793531516637
95805169112794610151738000575495589394634829337847
79940611270728630486439521082393194109697088893254
81799430211210050985981606084525854027350661436543
99210526401467296156559025791167615592331250267699
46005830532360301662363963545612469525816465021164
79112275446783208719696604764527045536627647077587
85551995140504338135867903033925692115048439877990
55918127758949665455300726809450639667171620582392
01254394083433104793871464704856391023649966480986
08982302598318068070843570575840043335415221693707
80750512188710382109567454043438378991998631344333
98826777553416927309004069908574576353996827417399
04344023569363014259316724062800079482246383538894
66337046232117489884598020612591819814813148826453
12662936062461049832369169414463993135229322453916
38400398267933861472267650420623078296383392820581
73524790605098105461133869174600300997330390847962

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