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-06-17T05:01:45.558666+00:00
eb8d091cf5b8489702c253a5f9b67c61e7d697212a5deb0c68e454d3688780a2
e6076f60faaa4680e2518ccbc3778d264a0a17bc36502f24325ac6de213fb210
18e25b1c0b130abe593e34e4803e6978fce53506c18f11c9a4f331787c0a032e
c08767a2edb1dc1a3744e8725c49a2a233c9b8bb763f2628ff34fc07bef1acea
c2cfa2ac67157d24c115c5497fb58bc06c1384a288c9bda2f053edac49485f67
6f1a486cf1beed0be201fa84ec5e8d2adf7810ef1705bb37169de2abc61d6deb
16c67fc03df5a688704aa59b67cc3e0c43d291925ea067b001571a67a1bac577
e08f6cb6444db7c2640df58620afca45684e3e0fd088d07eda26820d4111476f
26ac236d61e39edf4e3a3c6afe5e7e8fe50b756ff75c4031e39c0843b4010c6f
80b66966e17c89a95d26f4d91ee7aab402998913799109f22c9901e3f263b5e8
c0e03914549ea0a62f7cd13f1311ffebfcd1962643f2c7bf2c08d032d8d23d05
cd490f1eadcad3b479bec6eacb223135971388079bf9bf730e6c72f1122a6c5a
5c362aa83bb8452d1832eacae2d5c86360f1a6ada22b7e52f8f0692c23739dee
5ec7b2b3662aea49fb043d01b81cf877819fd63e555cc93656fc0093a3bb87a0
f78bce942fb66f30810af5621e0481d3b3c2a67d57458ea6da2860b74a4ff00d
cfd67c35ec0ef4df771ff1be6ae3975c642e793fc56e9be42f60e74b2d9f6d09
a70a71ee7cd4a4b5c442d1e1a19eb88103c99bc96970bc7ce7d96c68012ef8cc
4276f52c43a9ad86af1ee1ab80874cf08839b4c805c77ba18c9a6cf15f3198c0
9a6cd9bbee78a15b7b3efe43c4fcdbd74f787f3d383adb49bbd1975129357e98
ca3ca388eefd938e63d099fad42edc4c987d314ab5f3a14bc6622439fb1adc44
e11d6e2efea683bf902798b978201fa6dc8ff1f7a08750e8b94f8e2d49f0d407
84a4841062cd7ad8b0d3e9878b1d3927058fd2a8ea51ad0820f891d401bf88fb
6953ec34fb983db4f7b41eed1ce50a23ec7f6725c043c768303ed9deb2bce753
a15ba945426b6fe140eb6141536b1173e0183ad13604425e859fd937ffa4ed07
5e5d875a054279a7aafe458b2fc8a91bad53b5e15c76e35e92314dcfc88871d3
e22611722a4b5153872a2b4d8de3b66116cfcc5962f3e46aaf490ce33eca4f63
91c717ce929c738a925b1cb88144ab206dcfdf373b5e21001f69e661f2b296c8
4990308105a5843dd83b402ec50a723e8265ce477cbef6819ab50a27c3440ab4
552a4bf3f065efa22dd68a2a4a3ddc115c7d02297f9a33403eb66244ca8d32ef
455ba7e2b40f89293df6aca8e5e8070e08702bfb226376cd574068f001d295bd
6d5a41cfa32750ad8cc6d8b9832d2a6c11029f818f1000fd830feab61afc12e4
69e0cac4f9e4834551f0d8409a5ef282e41bde624847479a1a15e255c29997b0

From the PIN diode (hex format):

2025-06-17T04:55:56.757712+00:00
6e029062a1648ad8c901d9da9e9b65735d7e9912afd29f4dc566b5d4367e8c4a
5a671041cc8c98dffbca258e338c26c4a8ff1784dbc047799666ae99630ef34c
b871028abc63e1eeb9e139be01539b7d6d35c64431e27a10f48fc17abb9b9357
818cf7adc6d017c65da8577d39422146e7f65cd8923ae50918fe5751aeaab3c1
695ced1e95165cef9a3c3fd496d23c9d60fe0930ed7f94cd13eb63e75d3e84a0
a237144bbd364cfc428be29fa5a376e7506002fe03d13c81e3259c49003393a5
11fb73c4d8c15bf71cbffd8123f5c4a9169e53b79c26594258d2ff691af3ff26
34cbac954211bf17730bbeae91ced770d6365c44405314f7ed0b452ac3c45d78
ed9a6d12360517c39f8fe1b03213cce8ab908c2004738e45d33ac7dd349c9443
82511a9514803b21a000470cfcf0dcd490ca70b914a0b2f30a2d4ac864087597
6fe4c990e596460f20286689c3a9137f567aef4480d00e729f8f0af30571f9f9
00e59890dac6cae6223c655f56c4843d3390c4e2466a4c1e2665148d1ee37a22
83a21c4c186d0a72aa4c248811ac7dcce85af9412ed6a100a65f7864fcc1971a
f525a82259021539113a06ea9ad8442e5e9b670f5286b291ce7b022a2352371d
4c6597c2e0e0fe9c226c2427cf1c3714810ee86b2e139cc7014bd10dd5af98fb
af98a368926df7ddfbf5c0c15cd806d45948695f78383627615df2ff7cbd598b
4ebf9f63d22ecdc2c3e92225fb1166e3ff35a7687a5b2a7c152bfff4e2ca8293
d5b704db33de033673c9d6f0d0e17cacc25f0929c9dc9f23f2b47de0ef546467
98a12fd45d81ba3cdc788b742750b3f6b07b58d437682f841f8a4356cf90089e
17419d05fb682041fd47e927f8962bf611b2429a0905872f16e941606ccc1dbe
eac0b98be1aeaf32909c1e4c6454784968475a9b1de23ecda074f013f1fd6945
a1eb328052b6ef5e452f9673d8db37f803442436ae31a1b176772c5d1cfccd4e
167b5ee78586a27534ad97255c4555384a9bcffec8e5f401e6e91e91e121507a
0a62e0703da84af13cb957fde6781b8cb8e4882c9a9fb6644c398beda784a6dd
5abea7a08da35d1a8093285ae4b3c88ba13e2a90bcce95848dc44c80d8b8a07d
26bee22261e1149abc315eb2ebf627d25cc4126175ed2474f5d15ed861c73da1
aba991c8f0aaf0f4aa5ca45f8de2e38200c2d275e381a5acfca7e08604e38f80
921fbea953b0efce8125a23a0a0526ef942a964a9841cfc85301d02f5c790d7c
3d7fec38ee78104ae76b8e89d5dd318f9fa1afa4d54755fb6380dc75c8cdad23
e70718641e4612a93bcc2de6816d935739722edc53dfe620df63d005a83cad3b
df823dcf1a5dede2c9c05aa8ccee89a6e77ea758c8db8b0eddb5b978c708d017
b36d96823be9658f04a2c35b287d8ee8d66fead2867cd495f588211983eee00e

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-06-17T05:01:45.558666+00:00
41092884725102948365822497513342931204840435286207
11967070288140951941387410238854804736509098336378
16249128111910908962522862052053069343176449202410
03469235036277265568149273626251848718633840520790
72946272032125369321977327813992081932623689628372
73729503112672089011013294414220162305875522577198
29092298279261663612746555036212674546946003760187
26036186971943088268778394001334327569047862153626
38301365177111387235099758785860069426431117119264
49560867800112112882050224376993383070800253371921
45094453019981925720845860664724631917503867999144
08506105731530738021909834495351193607559115140814
18420890925442685984694524509996667362432682054435
15579499787902427304610184281929596285925486004763
87356039484782114829109830042979946625876942664096
83747913245314193190065192004621639710554796754559
09096710132464819666615884290355051288240804014666
18446769733475307128357636578005992361405408954952
92540887206191236267967920276156587387518141532652
60633647429953467652254974816175989836572668291046
66319144395285203231664360358085794245730732643216
98227635392957390543688173083245019136058352526180
80302810352703379267990448627888836191696966071164
97658307171524585404669433595564079493359005662167
70693947692773838192189446497736133817144275818335
42437741829722899806757312627999459923465615384691
28842968713209555994330031059778507344482905653261
59644697101462300171249029548110399568108085427501
62453842746117922502412754516462829868415069916780
15374161726807140812433499188764040149890990656339

From the PIN diode (digits):

2025-06-17T04:55:56.757712+00:00
10024498610038015855011593265318755977970281542640
74900316654052374251403896682332927121500274539914
76841302388899855790018355250953986849221643932287
55478729407398239893688725576633709246580924878174
70799305923049229254606350605796094827481999936232
60625520758954766639596563188096020360293756730051
47651715969391289129359669225883835638896688052638
52724966179123151190744512549268648320116942959693
20540918540523955943765019714440320415426958995256
48673081264920285933600071124412852060781045740008
17511144507015324002379569192786226828141459431005
13005244983460019586963261514496700676303801204130
22343162287624091014707636361772259065466100669520
00935126376834890221571758065468469455031582347845
23024235825529760151945634083639285520291407461956
99017513755275526304460992939206897205952056543997
93248989397891599946949534371702536704229142242143
30478304510354152472949509415935802584000352614793
29866020391639807976238855044732313867864408582365
57050432657139504317786654090535472265960829909285
39747550445630760084207304719055296260161905696150
28828294694750155503683654744961771819449328782223
94333462175273513792698556745501304533802210981261
68746085872027408436445459820076573967326690906760
41639326284740907939616242448849324196762884602538
90349720548849947839929618971736169497996161716945
70709264954130009417296572673404432846319069837629
37625810053848425074526583014792211324612756201674
07423749435961756471859928177335072400307018695945
29094787571446833299056860735930612693929068376626

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