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-05T10:44:13.059779+00:00
72530960b3967218c15a16d7080b58f79b36df2c15b5bd9bd12fb7f707664c44
98644554d3b1238624bb35e7220c89fe2fa0fc29703c818081868539865fbaf0
1f549f6a4d703715f66a8ee3756c516d289582324c7569e3700a80179a6e6701
51025fc5124941cd4d1bea5a929583bc50595b7b17184a26a8c7a31cd7b4ec22
19662abfb9ea309cb756ed3865897f58265369bd2cef1c1edbcac45f32223299
3a405c446531e3128e3a47901e2e2eae3adf53c42202ab83374043f283deadac
78dbd85809c73742237ecd600cad09f184bb0405757a5c2d852f8ee3b6c368ac
14d6cb490bdadc5f79e2701a671a6e8d5bc38ee08304b21618931e21b0f3c00b
355d9032a8b8a71f988abe853b943b66231e13fd2706d4d1c3d713188c332f90
4319b47d28ad2feb23dbb24a8f4ddc2cd9fab91069e5704f3706730cf3a2e82d
37b816b3438ed3f799777651d9093ca526d35b08f70d5b880aa8daeadc2cadc1
a944cd1bef9c1ab9b17e61e2c75de05edbb2c2e8a1af2cff47eff3113805ee02
74cf088f929a66ea2d1dc5334c866baf8f36b45bb9cb24cdff8e58ef5529bc9a
b3947d87c6bfc6703f0179c142e1d15d21eca61cdde51c5153dc92c649e4a26a
3e447276334c23617364e5c3a24354f2bd1aaa90e4ab26a8382c0ab1676d6a2f
fafbd3b539a3d4d5bfd45fe3ed4ddadd58967a8528ffe6b0900e35adb288c119
2c8b230f5c9a3356b4dae4bb6240c2c5b4edd05460a8fc379e14e883b4acbcc7
b69f4df9a9bd5f4cf88b700491d1d5a7480d8d67b2f045ef3b58a6c88b53b6bd
a18fcbcc471f579ab2e4d6f67489bee64c62ea7ae1b378e7d116c89c7c43e9dd
5444c1d7f737d4760d2d39572efd2283a1c2f58ae039d9dd4525b0e7ece2e271
9086a99e212e25786148d128f11cdb50590ceab2477b4ed4a47189f5be835861
6c535f7474ebae12c2ea426d6ca3c6d12a96bdf1f994a9f6b2ea4481f48144b1
f6ebca0352941d45fb31eac46558ce32016d4e8fe762c52a8ffbab58eccc5b9a
7cbfd9eeafcfb6b729fbc5aefe394b81ccec14bc91b1debd8dac54f13fc00e7d
eb5e3497274bef3fa4c9646d1e4e93ae18a2fab5ff0b2fcd7ec2e2fc513b692f
5f807536836a626973b67fee5e38f81ce713818360147e6667c3d01e1aed3987
f533e98f0e22aee3f917cb919919accedbd93e0be467e1d620bb9debe90cc1cd
0659f5e6b38bfc7a037c702bb6d4acbd2fe2c117f72f67e6388fbc273473456b
1b2757ab2987d98a1bbe5a0cdf97db04ece83aac18e8ca43b1895a0fc946bb6b
2dbeafb25efa1d14b29f1e5f911afae1ba56cd94cdf2b06ebdaf532c7d26bb4e
bd42c2a71b6b3f877c4a8030266c43a8e13237b353c4cc2dbc4f4973b19efc20
86d2758495c86b6f70bcb8a2e29a37ac8554b95b9aa6373ca1ac40d0bd51c81e

From the PIN diode (hex format):

2026-08-05T10:33:15.861396+00:00
037d9819358cc4d9e7fda0ab46fb9f87a7623dcb548f787e63319aeef2f674eb
82ddebb2dd95e4aecb4c7e505b428c8c12080d0190b7d4be8b8bab57b4417b68
dbc9d31bea86e1a12806a6d3805d654ae4a1688aeb1b03f1e75045c1a06e5e7b
a8d846b6aa8ab17ff1d77472b0ed61f4aa646bd9db3c6be04f8489685b847d5c
1811b14ae3f62eadb94b1feec153baf9d880b2a1e99a566bbe52bbcf8af3f886
4c5a3203b19e23f6748dc2e3dcba98fbeffd56dd3525212a582d8c4569c0c381
cf3cd177d320cac90991210d58a030346c29df7aac9aea2ccbc608903c5e0f64
295a9db14bd8b120569b7f9cc64a56e2fa930155a33fe5d2e38d35e771dd8a55
4dc1a12a2457ef915658391325158388f89f3a1d9e24b66e85d05d39276dd61f
4a7a27b5473f162f5a03b3c4b355c93c0f45df22e8838c71107f3f631bfe2b9d
01b08ef6a392d6765d90cb92ce14bd58ff3a084a002d5387fe57693937d3462d
92c4e7c1eecec8f2f14f3e17df2d71ba5dab0dbce4e5c57d08f298a963a89989
2af55638f457ab5ba942bac4e90b907c55db1ea701235e8e75ac6995328f99a6
de3feb2383be0676bed044c3b932b781520c28bbefbeefea9069ed640a0063e4
42068bc6ac03c8235ef6aa717c91cb256d4b2f8573053c7e940fe2fb7ac385a4
ff1a8a3e77637018a7a11dc6e37157ff1eac24da46af64de2daf39bca4230f2d
0b002fd4c2561152259019dd59853ffc49c8795e39e3ee39e336c2a1bfbbb85d
fa11c00fe34d7253b6f5bb6cae9801e3ce0ee6167adec4391d5e4d6a479757b1
27b366ffc2da7d78806a885552855766fada9b8416cb5d4d49833b97a123507e
20117d1d520df4c59a8ffa2a7e6e2db2bbfcacc34d08e919df477d64991aa459
45fa10cfd68ef99b63ca2eaa33fa66ecb9a7106e6de8b4a795516cd8b579edc1
a45d367710aa9a22fe19a476589c9cac155abee58e862c9f114608c0722548d8
eec737f0d34f8a00722dea5949253b23c5e15f7816dbd1ceeea02548e17573f7
938fc7ec31167023fff16a9957f6d55bc5ae75d497ff6df597e9ba90cfa4374b
697d327c5e9a54ad1bc539174608e48f7f2ecfe0fa4aeb77198cd533bc9d9e6e
8697249ef60a7a7ba7101a08d41dc978deaa2edd57512dd85c1bf0e0b00c4130
87c8dd400397641e761524cb5f61d952da90c23e5c11086182340766848eac10
30253127cdd8fe69054f12e32a4c14a44296638843535f8f0ea96df209d046f6
138c0ca104bb7e0674e69b3d87a01818267139dd993a0b74f803ec7c7a5e5a22
949094f321b8378299f6bb47e493f72f81d84e101610856802dea99ade18f9aa
f48887f45c0c90fa8e914e8db9fec0dfc7df2c125399179bb79e69c3ed6c43c0
fbede9baaadc02a6b286bcec69db5a2ecf01ece2f703180fe67021bc1a17372f

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-05T10:44:13.059779+00:00
14830996795014249390220811885554442181895547830702
76685200698477353436875334123747604112602928293433
57349586318459067712552106421708810940493050761705
12102823541003018102959718736577279046493188808991
23232474386899632880342502429185485683865601372788
38830589442830969550345053586492680149184258714430
46467458839634027131556467317372208809995566352696
12730932870405172292453347428295047220731195211226
03261041919542310478222447303376921153934450688467
31523890335948590235301939069519244051474467258025
40734735787443774485160512795506151262455584227967
42531918810960653891081391361068447393696827562685
77269799939478946175447117560502160843465402452997
51763407754354809185364288854188547948253598919812
63012193669333662828818346987362066268141851763597
15009562678489267044713868564410770309064781576391
95778850223340764414537378369325443935159254518680
87986494978084966855582031807288998259776989957639
12044567721341037869598866398382896143713187547816
37907698227920225624678468935518134557874634316194
38576937761344346958334637209772402880891278712378
64133790318897088395161674189466090863984250894869
78682929687703824829694996018850010978439897424371
88915424917582834197745775292088457789417284639214
25945251397563640009307847742462811147269481590547
95281754310698051582279456281929319620260203953026
57355143143474234553257262110332875712930689793922
03241243827289479323470356438839521569072739877141
35382790901251045872246777379015708707459075789429
20785930954526868648761089758344253887788966946727

From the PIN diode (digits):

2026-08-05T10:33:15.861396+00:00
03255225534096607170593567986184432026994954163078
49747626809166404018081301448390393971878065230427
34614006662893017461043827038069936010942368708270
38772716147697700007600779323704913225922417777446
73857531938386287861548607908287383476905003775835
16419486528653373342884540690592952960193209453313
88604852084122725444980844609415004190577775773286
55275698748647018563634153133885779361423687458688
57193721313659582958368210339357390931742239817163
22479003799679856015693431401316276399274357017642
63461893444620898858087400458335870557557045469693
79622345138693711388972508526999685337428656877191
69668696114424853067013594421772054950435366633531
90061890689585508329821240879044050010009966063998
72033594701324453709754733150560264815229533642638
62199912246761299813873072367075004575578864351545
11004794861782374425893363732194575754946191878493
17921577148382870874520114222296572994770671518777
39790294252028063685823387025532229377733159516135
80263217252982139754434226104578877295770825712500
53266489691642559946705102856716100980674981088121
93649354191670543425641888565672219090423444591770
08921437729955793800144589733759359795202260377217
15474399492212350653879197741751095186446455750525
50249454847327975723700843274674192540518857581034
51365810222367162608292070468781459227761265483564
03510030182136959782449462921708973052070232427216
48374939050579184276206466509936678395431469090970
19401261048726061655613560242438135753581116032422
94903448444833845530538771474729781622163304026954

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