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-08-20T05:36:51.051538+00:00
4509b5f00132e6fe7242a44896ae4747d95ab60da061b468cb9fecf3684dccdf
4fe8f59d4fb88975ef3d4cddd3263d2c4f13fbbf24f66db8653f56f60e1c42f7
1613be85d3f02ed3883209aa4835851a35e78dcb1261fb8dee6c451f601a0938
312e00fe39036e2897cdc82421509617190db4fdde88edb50a518573abe04a09
e1ba11ab41771d4a050375d2b9a2e2865be66a4f73536aa13c33bf9488a71dad
1e36c2ea61de08e62f32d114491be645a9d013b8ae587a33174f93dec3029cdd
1b23496d8552688310ad48d644e6a98c660f6912107d52733f81ccae15d5ca70
f5dda6b1c94c7ca7e00f213a0ed9f75b16b97d5f38bdefb4e74d927ab966aa3f
24be5d540d3363bbb7ea52aaf5034480e3d3123c3f966434e96b8bbaeb0472ad
a222f4240b82de9f6eaefd977085b8d17185246fa94d2814f2dab30f32e5e5c5
980dc896e3efd0d8457f21237f0ff4cf6fe235e30a5501d242808eb49356976f
5a897b2c1bf10524df3830b47234046a2b0c93a7d5bb832c2bed725cfc828072
87e70f178ab2083c1357c62f111965c2537648b932f2cbe2257d092c258a34f6
985c1d8b9f99ef460d832aed086f9aff8b052dbdc810a8a6f537be5b112b9981
bbeb174f4dd39802bbf6d4beade7325757a3aa2e6be811a744d79555f4ccdcd3
faf403a866c2d228e76377f097a92ba6e236f5d4b9313ff8bf697afc18cf89f0
b227f1d9a01d4d5538a6bfbab32a2d2fc1c7f8ef1734430c07a290010c2d69b5
79a3ab9e4e2c317692310003c6b7e0dd993499a11727b97c3ae309229e60ed49
694cd47a8178456fd40153bd003a0170ba2eb44d87526cf530330772b7b3e991
76c41c16b58e2495240ab7be839a3a745a8c0adce3acdbddac4cfa30610e6bdd
54139ca39619092a04df26deaf0a46face7b801ce89851bb3f11d9771da6d1f6
3888aedf30330ad0b35c5bb65dd1836a2ccb18b3a90738a7306927860f2d9532
0aa3bb02094b9b0b358c458f46140bf66be7ea12b2d89122a3d16c11d8588fb6
5996dcdd0e1dd728b6bf6a922e463b90cef6b56a3a04fc6c4b41929004ee046c
7dc870328cdb9aac6d5df3b9ccb8644cce72fc990d82d40cb704fec78ba565d4
7cb07b8fc417cfc4f6059b086937085b2bc06e77fa779e3a7e77b25d819497a6
c29c95f6bba7c6a25a2fe6b7cc388d1287b036bae9e5347eda1f08e5b25e9c1f
303617aeb5f26c5715671c651e76ba46cdcdb730e1f37b97930ce568e39faf5a
c42155ed956d7a86a3bbbba83a4cf4d1d995a113742406de050a20f0d509e107
feab619ae238c36fe25110b8d62a51887ed9c62dd9aa55a7d107a4042dbf5d54
94711670ca7e4d0e30b4aae9012e6ee26cc9ce42bbd7b615a3fcb2b5ba7bda21
3814a704aac05abfbe7f15ebaaed0ef303bc6697ff1147c156d36f6e0213735c

From the PIN diode (hex format):

2026-08-20T05:37:30.251921+00:00
f9ba197be2047b961365929a301c94038749d1c9aa15935f91b8d8a9f2afd73c
2cd712ffc6ac175f85c41e6b796dffca9f5e993337e550b951dc1bd0d1f13d3e
9588f38c99cab098c3525435092a214a02ba50d696861e11b92264d2e800c305
48d2a337169558f196792cdfda24ee05a3e6ecf101a370419e70c7c64c09da07
e21a3e11a7be9a5a52433b02dee1a7d70565fa4858b41897922e6bab18a20abe
3eaf3f2e8e4fe3846194a367ba7f9fa718ec2a201c1768a2b27eeb34c74f8336
c9a4a62850205c839df9cd3660857ed83bba2f91af2804e734b3d6ab37ddd90c
4a67ed7793554c1d037448c83f3f6afad4319603b77f3bfdbf39440bfc4e5e03
4a85df694afed1e3e653ab86e2695954031188fe1d49995dbda5f1821f7125e8
dbbe6873752ac5d02cce053fa3545ef963d8691f3f2e279e9de34708dcdb1cf6
efe61a2174f58c0ae953b1bf90710d9c25f4891db471603d4af63802d1d27024
b58e33b6701190614d83fbebb4305df25cb98e7ffa2fc0cabf259aed9bc6c3f3
47df4e2338449500128f2a4ace0a9bd197624967e58edec2136828d8d6475fb4
b536ec3897df939dfe6c6212fcddcce6eb8e0e0b310c57a6c1cf43031f28581e
d4b7e013692daccacef912057adcd94eb7713ff931a96c739349d1d12c115259
c50d0a8be665d3c707c990a42d302d0e57ef3bc1f16af63ac2d05b0c89660b07
f5e396dc5a6fe9494ed61dd5c738eec5655ef24477d3e318816b0d1b5565f8a7
367b0e686f134cc53f3ccad196f0632077d04638380056be81030c365872eea2
1fde27f2b5fca74ddb285459583c37eb4b708f7f8379d1e245748fc5ebf6a3ac
01cc571fe3b14d9fae9e7a6bd6f449b4924a4fb7b9f2145abed744eaf183f304
85d49d39666b8c8e47e5e53461d82a5bda1ccf113eaf9a6710936c6b0b9899c5
348cc0298995855682467f97936904efb3b83a4c0c2d3c81bdd110c480a58d30
ccf1d2da3dec0789040c80dfd9cb927249bfbb083f8d509843a5630b0845d4ef
5756d2ab96dbd9146b770c7e319ec89458fa49c4128f32616391c4ed00f21847
8857eb42fab96bb63488fbf144694da731767bcdfa9c306fae98c1445393961a
a93e42fea7549d32e5a812da97b62098ef37261ad97a835932f32af5937cb054
abd176d95d4f02d7e481997c436a4694f99e6fa2d82d6c31f80df0c203a5fbc4
517b990ff78fd61f7623270d225cb397c68cdef646ee4570afc016d2cd0e2ad1
e8c41503c9c142a023e795baf72214155bcb87b382fa57bdad13f1dcae19ec1d
4adb1cf811436746002e1b8c2e341e6673bc8202efa8e1cd4e456536d1c518af
698e5e0377ade7dfe1a0ad54388923719c04c70bf9a1d37cf7751b6ef9cd4e9a
fcfa502d1b15612989c892b4125f7b47cfbadddca9638db62b5bab071fe72098

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-08-20T05:36:51.051538+00:00
69098101501466647250747171908213609780045904777957
79843717617638614479199136098401638614286622199033
46365009707253332653411897410869319626095649460057
03104051363380502325138036811081331571740986177165
19297405031785623491067915830661605191483667297330
54949708475020732769691984748822512379479502562735
73093382043116737268694002150518162582156329742112
66777624671533581491228525955689807746228502706336
90938413519987838270036828186063500052073986041473
62343611305910745112338413333611697740207915509752
13506927333527151153108501662842804786511190372344
27053656488014520406431247678731444314923028143515
23387808601987984717250194831872855037250944373852
52922939595370133142081154390545891668665590911743
53298723797752028790735087876370460717676849850368
02944099195169436654854963910522243778396029778556
66918679424547939923526712076244011245058121637158
78444918464900039883535253612339852458093458967305
76222920691101838900580112864680773582084851071483
79451896282281423649361083903154581690401072727648
97140784195663502509420438751070232828528187631719
29665636744851107992918293310644247969075667480539
34154549501063870209755511534069437020110718784534
63081788438289501429408291064646705944810658040875
65464404040825125040547209938584007614531330128304
99396501247623439623960555080555089143921019195858
26197893294851669456498767986290478356411835765486
52263108789456314854237481088721032801301886708348
23514712045975909633854909223463878768587649611916
36060510320907719754569511811684428136269845708567

From the PIN diode (digits):

2026-08-20T05:37:30.251921+00:00
86252304235019014654482848033573702147954584697560
44189872239533963007210959945351558085812761624936
40537652958284530942337402868050343017853400009505
72635522498850214436056301631265581299987609072662
17679054908267590267050172888024514646077124621090
62756346427932974863038627596724423228230462782652
99793154646640803292315754963326598647457540045279
71551274031947857629031672636306495003832759915768
11789403743305748371340589840317362973539389653031
13379004151742974405636384949905316346395857710828
26331640108377914413135637372980139661745602123681
42518212174497773180489392854227479291375455989571
78355668490018434274105551987303429419044071958081
54565147570898184214114912876693670331408830831905
45721805227883136349690815477344178289971310390199
07446445484514875993065894911237021107509011737829
99569701946819242907132785016754231404111976976360
50993219705656008690290312548814623139816777408489
88605575124327312169164397637201873177775974582207
73804674798385209090683104335757020740427152974291
28176275540316470807115253975240924137493386307027
51470504798458761245602989169628654148610737041228
46147391870863418052676599110869878671502007191226
49584888739618435097994596002471368766850782523668
05776749182356481174529368834750266962666784575068
18518232525538262231895042472476847118937902295324
67067048581162450849139403659681235315433118353913
34927951984070691275922214429621039366603549863420
21913579308789731974252974281767037000462740465230
02158830026878690154972475054294031973607384563735

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