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

2025-07-18T22:56:36.645171+00:00
f75be80cea3f8b41b25c9eb1e35dc491993205d47d7a69b5838380cf1add4171
03b7cc291effe696818e4cb557d70099b4a75c2688b3f2a14b2ab2eb1b43306d
2b366aaa248bb7956ff94cd6a525f8e9df3df4e3eee44406467e4624a5414c70
c0eee2aa981ce7fc6447c6101c89edda9c085e811befc9e2ed335ba55feb8d0d
571fe46ef218e95af4b3cbeb9750ab18d07d2e96f6f7f2f01fa494a64f6c619a
88cb1ebc6066df6602ec1f716d52d6fad317ac8c0c1fba260f6667c9e268523e
077fe027f89606ac158e8634c3a9109a20b050e45b51c48f6d2f00515b3d55e7
fab956c80d019ee0d446aeff14d2ef1feda4d3e6e0f4d2cd8ea90e56e1ebf217
caae540d89210f7e647a7b198780e3ee02c4b0621705a78380db0650e6154cc4
44a0a60d57c8fcf2b559773502d71c4aa7229cba9cb8dc65fdb2b7752db0ccac
fee1324d77b03afa86dc2ad7bc1dcc5c183eae635e4297466e37bc4048cd1dae
1d0be67e67c86aa48db90e4e0d9e91179cdb135f8c89ff370af4939a92c2d5c7
59807b739983f1010fc9d6dd8d7f23a81ce4c5fc4e8704e11ebd89710c251905
38926ac553f47a8b0f81dd0fc3b92e27078f0a4d5014133ba1b53b94b06e53fc
832648987d714b90f0e3274e76b7d311508847de466ec07aef46ed87fdb000d1
b43fea4572416b055907a192f2945c29b3f67c4ff7b559a202d0f5f58ed9c016
cbbffcf33861620f4a59112d826ee0590069ccad2ddd26ee22772be3eaefdbcd
a482aaa03952d57fb30e55eee6251e7956d60cd7dd29b51d4ff0911a50d65ad0
81bc78614c7fd95d2c6392251721b1e6049bebf42fd8fa313ed4bb5ea6935788
cf161534d7e18a2b7368de1128b5811addf9905552db4ac756c6fda79f6b29cc
2eeef47794dbe53e53cbe39437322485cb2c0f3236d8c9f2906af19844a57e53
0c460dcf4c1a1b9f91844249631c5543d5a969fe2a056653a375c022db8d44da
c10d3cad1fd1aec04402f7128412872f7a2873e4a8154d0871fd3017a5be9b1e
036658e0137c03b4ce50da64d45e625aaf7fcbee40805ef4f2350fb7839dd718
491044c31fda393b4617517a32f4c34377b180ec368b597bd01ff21736486672
29397d85469a80220c5d7b1c06e46f04b8ce240eabbafe4794fc1cab50158b94
0dd10588b357b10051c49cae6d35692bdace52a487fc530328cb38c25e7787a0
aa60120cd73721a0d31cfcbd2f6d975dc6f109f03538aaaa103ee75340ccbb9c
f3bc9e11914af1b519377820235e8df437bd7f88143c5b523cf6098bdb6b27fd
ca1224a3257ff60d71f17b60476b0b782f8415c9bb10ef47eb4194b8e0c71234
b1dbc263001007f5138c1c14db824d769afd638ffded6dbf6ccd003e1321a778
54907dc2c6a8cf4f4a23392761fd410579f30ece18674dbda06b959036f57e65

From the PIN diode (hex format):

2025-07-18T22:42:30.037750+00:00
23666c3c40b6f73ac7f4e2cfad587aae1293e0f557a933b5d1125843c8fdc6a5
8f5e1f3cc0db0538db886eb55bd3546014aff1819ca50a5c5bc2b9dbd181adcf
ecb89164369854e01b2f9aedf2b969a404079fce18d0c596b99eb4f44ec077d1
b8a56dba2220635f152dcf6f8c27885d648e16391911c44893dc49c66328c083
2629a4bbdf216ffe62562b410fbaaa625832b931777c04edd82271c35550ab45
ce49e4a12d3c083967dbe128eacba89cdcb6e036a36eb0ab3716d74c51fe9a98
2af94b72de1e9a0d3bc81d0eeda0192359dd017df46276431f920ef81c831ed2
17010cee00267a267df49c70dc1363cfcd016d3104c2b2033efb3613f4ad407c
5fcceeb81e07bc541b0b8a3b141f118fe0c2cb6bb1f2829ae441089cfb43943d
7f24d7b47f7ea92e85a6b3138c394559c41af24a5c6f64c5f654b02982bb4c3f
6ad737dc645ec9e93c0418cacaea86f120d8e3d1d8ca7391c2ce44c11fb10330
5ddc5636d90430b9f069ccdba822cd9e4825bdc82e089f51f2f10b3399f8ec7b
245fe289fa2c7cc20f229e829471cdcb82cac5f01b959ab23cd6ce0cef0fd59b
dd93e95f12b026bd4895850abc16b991098633a781caf50303d2e727f211af14
cd1ffc37c575d28e41b40a01ede26b831213d173edc360182b6d6fc98934f65c
b8cf84744a1afd55aaad7fce01add727aaecba2befd6aa05c9e44584f8cc1430
25a9843779173c5005fc63c3b173bcf3f6c182695193f473e81ba7e2113c8f03
028bac7d930becd3b26249591f2e1f2f19f63148345cb275eb48d92771f9af22
c69c7f2ff1fa496060554694801b32b569faab8da57b177b77c965b7d81c6c52
b861294d23325eedcea600a55ef8dd26b79773ecca4f2740282d90416139062b
46bbb11fbff7976657b105e4b6fe303b7652e5d008098aadbc010989acd1930f
5e21b4068b751583887b57c58a754b1b379f3f72021643fed486033052bbcb47
ccd656c482f1af8368dd597a6176c598956ae90827e3b640004335a1c3fef0a9
579a2522415341cfde6d0618be3e195b84b478a548a2a16f1d893174b7fe6175
00e7bcbe0072671a2b7148e1a2e9bcd2d8f7d110d8c5ce739685d16870b8f29d
412713fe215c8ced314cebadd8b9e8f410d62702e79d42570883652213e88a1e
43ecb0c68f76fd66ca9b3afb63308570055d385663ec1fc8c43f803313f56804
e2bd73f66df581c0671d9081a637ff0ac00bb4494f77b5b3b1126fd04ef35056
ecb85fd58b20b8b8658b85f7a11cad8d24dd00b4856d63dc6bccc3d99a435df9
2f1899d24a8528680a33091c8ad0978b329d470a98f9e74786637c8ca24062f9
0328c0d33ae783f84b5142b095d9f4adbb4d01499d26c37a0d3b76a66fea152a
a36c0ddffcceb5f0df9d4cc4112ee7044f3ca2edc75466451c36779a6e30c66a

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

2025-07-18T22:56:36.645171+00:00
91126339657892587793964553500525220581313128266513
03834130502942768187005380679238367961754278276748
09435406703639834911766537616806702670366565761292
70522800719816283756089429275191659541138731102490
79518071242546503164486679089754363088960202023113
09822372401231863815020304826207273950067221423452
95691654327680918196430947008191618585861301587074
20316442691486237484133733152600222325352802967698
23056731280680217696686066138781891953022874673456
86568401788317457672507719765834428829922462749994
66517010558864722974291126030664418514781358452356
19954037551047544694998928231553310115412735682897
78350430893713123725055646069783223915291595854639
07431077802019596181594876108331387252251375443978
18831780367170109222703576008063691465070589076146
48924179247981896202429222915697981574891745301089
00057345383419436430706057822779148537302186124181
29794526809029882097762793449946372333770455474962
87946647873622215238431504174081292644858274998698
67590741461948628348555036334415505444065268652683
12701376262759453266739928856769054205028363179234
41689313607331749268021832183547224015682177081348
23659055300302881924038080009498907527642894531583
31572473166895315759702381225095671977285439892331
23547202144157253370542834129323280611048436147186
71482871802139481305367987770081965674095305438264
35830340569494193560709618125533602889470951939809
53567070166283648756885817457481255520323594415589
27362060918260093907391836633727131323967107112047
32218716716548849918527794990016071940282030771854

From the PIN diode (digits):

2025-07-18T22:42:30.037750+00:00
35020860648258997388227418478769518118886798654394
31609205563610819184962075295665109291948529738445
00545284274754850564040759249750855880789219846509
86343299952145114039369300422257251796724773989940
92313841648733119886436515867098885085491924043413
95858071697361456008570340685682546310767155227681
54524275143054135929146025358901259818673146142831
30230112003822382556121999010949049478036254197364
24958430078884271138592031174394077730546508566748
61273680272669463366791940576989962674921100978476
41308776630655009460042434321545946893317703489386
54044885056834587237894608598111515323369537442494
15345830481330972749547860121555479518763889724933
10882285450934516729030339177520315597174265801001
07311819159596244309113752928432167426857073270173
39708643700569322048376932552123608005999577158893
30058147152767176043030239722547117898738931463147
25497252927817723913753498562747739696857048282750
81057141652323231901832808828497417735509466006594
38835115793964404544659757064370877731915102877705
82485918820809387388010937724715943380063917213136
23879738177527555963140222673403488287718696307531
04892297189752490608398264006753619569875437346583
65090624906225913280206572626111293749168397170088
90001403264313726288169715503304128457653919339240
49767385163902576687083101341938306776984318025558
99483312059356869931966328511904048915092992032944
29665510921180737919817977181178808684953932848401
39336128734136008033099907955467934724537433400410
51092838513950577110527134992440626498034092583175

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 2025