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-06-08T20:54:15.550442+00:00
8e1124863ab5e0f1ca4a5eac42e0e106fb55a639b09a5ddafc18ed8d982caf2e
29678864bb713a7530ed1b6b49013a49563ee0ec3d9589a202e72d950e8a28b1
4b0b4e0479c86bc19a43a01f360ea19cb20bb479565c8a6387faa62deb1cd3f8
063bbaabb2142fe20f7f5a47da5917e7a425423fa61d5b62f94cfa5a1009566a
a88938f1dbf5f5e88b4a302e90c252ce39ec7f894001ce911741b878ab9e6980
397bac11734298fbb9cfcae221267afdd6119a6c7357d01018393d7ab56125c9
a7db5160f917d624f6b41f08fa811b4a7de1ac58ee66df583afc37564661e059
5d9bd692e436f6814a6be002ee4b76549d95723cc3e210e040df44ea8703f343
4d9188c5928b556ef0304e9841a18b5556cf2ffaebadb5a702507e9e39162703
bfd059e41c0b8e311a9dd6c3570cba3f1418957f1297ddb145f31cfa9449e7d8
ee785176826f3755393b48fd5589ee72ebf831a3a32cfb21ad5c4066bee7ff29
5ceed9cd4ce5f7630cd0f3136cc37179a63ff4975465ab2319b93595d177e791
f750b73ea3375abcc5360872dfdb91e75443f4edc744b736db85776d7e963473
50383019c0c46b0816fb0aee4afb405d6bde99a21e4457aa76b49696422d007d
7e35ab4d3bbc7dc5667c011861f6b5720007c79858524114c32cdeefd350126e
8e58b37d6037cbff3329af1d958b0d8a635ee90d7d97f65cf66d525ace298912
ef0236576b667dec69852dc21568cb0a5595b275048e107bf54781aeb0aca0a4
73f00965a681afd534ff274a7173c1a7860ceb7e4a5605db45dee073eb404815
2ac0942700f534fbd21c38ed41ef5118fb90c1b93fcadb3be3d422a4416c162e
f746d5f53b0684a19de50cc4b6a37f72ab58b9b2f1b7d899983aaf3a01cdbca6
825485279416b51fac695675515917e115500a895d2b37978a08b3b4c6270bc7
a13031c80ed919390107a1f210d10e4fdcb3306a9f6390a4f8f2aea0a5bc4b08
2bf45df56b329091999abee9dd697843fd3e053a83244456a091bec278cf8028
883888cb052f68f10937d063fe8843c36e93e42bc53686db799cd3cf8a059fae
2116817207e5268b50acab11906df08cc37129a4e487da86cf00c26078d82e0d
30b10eb84c001826a4b5ce902be7ba12c5c47eef9518644634df900f22f8fcad
904909d5afce178aeea880561744c666d55df7691f7a7188288965a54d78908d
22297428f7b5da41eb45635ed81352ace7e0ad7b5afeb739530a3f85adbb03ba
bda42b6f2a0ee3023cf38d7783a1c293424df46d2b0a68e2626192c5140a91d5
d35f2461b99aefe6b4a7bf3763f85be3d1573e38262d79ea7a29b20f1d5778c5
16b8e65fbf797e143c2b5738c08b7d9fdc9a3bcfb16864e4b29db48086acd321
d23913a1a08d60ab94873502583e48ec5f35a7361c201ff2e8dba0ee374623d2

From the PIN diode (hex format):

2026-06-08T20:53:51.550470+00:00
a683c0a81b068fe4c8207df58d862d58b8e171b1c6e485d3efde140bd77ce50d
7ccc81cd647252f7e9e13c95eaefbbad82b4ece0bec83635c64689c8407fd85a
ff6fd3d874a81840d4c23ca5b89a1c3566f0d0fcb9187315749627291f7ae686
62c893c2376e82cd837f2da43d1330f732cd3dea0dd8000e20af2906060a87bb
b19959cb4611b31b7c1426e787ea417766ade2e89200febdd9d99dd87c7a82e6
bb569f3ce0c963081bb1c96fb7e6cbd8b83d45f552dd3c29ca6446edb22f010f
c272905cd9a66ed5b6a221ac14150b3e6a54151b6b73b18a05a4a41e1f54dacb
b404d6feb12d98d722cbe0a39b60e15ed149500fde5987f490e1ad734a894719
943371fac730d3477ce00e67b25a6e944b83143dd57d2f723ec7aba59e1acb49
6665e47f9290414c48e8d438b9804bc5773862260dc66f1d5f9f32eaa371edb8
33f7be2d16a360b26825505c9bc83040be7377df21aa3ad3480927ac4c5fefea
f12924d0fd4c8e05cdd16ddecfedfb549237857def9c9ab0598674b7edc6acbe
4cd39c70b69e178747b70cb82021c88667bc07a2aa5d13be34d03ae7f6219765
2425270c6e2a798ebb62f2c952e8bce8538cd2aaf7a68835fe9b20eb328bbe54
8a02cd66f4fc4b10251b4d90f3d5db8017c23a53ce40cd106c5ee2e8e63a3329
08d7267c6dfcf31a6765c83af4b7aee335c80b9b0c747c2a2aeac157d2deab84
777ba73649ad1df2b232560c501d1924817bf09e6cccd25f2847e929f8217690
0066d92cb972d5c061a1ab2a8ee2e46ed6740ca89591f3ffd1750f2e4cfa7ffb
878b6ea96c0b430e0ef20ab3766c95e0b49dcfa6b562b80182ba261b13f24584
c72f54bcbbfe9d788b3d2ea001c88050fbbaac2b0b1e17ae5a95831487e96ad1
aedf2fce849c4e1c451877e21d96a9e3697ed323f8085cef3251c91da5e6bd28
1cb5510e134a0ff2d2835a986b12886d2b91464f1e2ca4fbf577afbd6c147b02
d52960ee28c98a1a9754f70d3baec50c9f12855757012f63c45580d06835ac93
ffc1b8637a413ca30345f8976ddc7b20de1d031923b1e207ac999195acfe80f7
d5598a485ceb0f594022d5f8201d0ffc2651dd8e9dc18fcf8638d3fe999fe553
05a3300f41d29b1f0788d79393bfaf077d547aae4b3db5e06bd19d7781b225e8
84861f377fc6db9d367bab54e3e62f4b2c0d04f0cfc75c7af303d34189069c98
c93ae622a73b703b7c0374df1019a567ee666b87106a7ba4645833cfe669a49f
8d78a184c216e521d8dfb968a4e52744d15b6809df9cec332c4d67eb3e27db2d
b84580e12aeee49af146bb894e3aeb160837f19f755ac1d947ffb41076f09e17
3fab6bfadbf30264e5b02420aec5bdfe8c9279779ab24f05bd715381b646d81d
fc2ad6dd8a7f6f35a3ac1207825d657a92e32270a0dcaba4c65d93a538f617ce

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-06-08T20:54:15.550442+00:00
42173634588174947266068566577654932441524475464103
36008713581748270773015873866261493762024549143840
77751178042107935467603154146156781180218692389935
66452806598671782047152790718923643766636629919876
90160986066837563974484644948257273764014523658420
71580528572372171566528533382217540815871624576122
81973767819623368031082927742572880288585586709789
93554654297407027518845749146095166468350367774536
97463985104878526561398586477381670280265857223903
91892811424926579587128663202449271851776928487320
81183011558557597285371449636344337392640290419276
99121908951321666351840171352585534919458083626355
90889754081445846799688354331909265052158056482592
96070822107464930753623068877018805050664500252653
71775988259702240124978114000799528882652095448018
10428879259655514175294939133899941325519209829041
37180254870702250533459421041085497817044216237129
74767260641509016629755239741315936734122674860569
15647221429248390052285665812444938563593464650822
46705906326157129682632714718885788353525875580188
66308433394822813172058617818923218010379343555138
08798098391199614849142557010761161479794806599944
64746065887508439307504445535490052067620558313668
86604590942028403656360547040955993667951047439754
34215638055974332229140738398072711744094095134164
35340094962046134877148476002438648144438618979626
49240070524415347344730975233868288623689802930531
22133640370165772044413441164081656999941982727323
90835783106333738703868964431142140260411931619447
66770943100498974697201045953697855480679155999187

From the PIN diode (digits):

2026-06-08T20:53:51.550470+00:00
66319268270643322541344588841377983320112413242900
14826049877330809054539870376427901116682464946065
84542853028524152116503941312234984794551030312745
64611948506113001432754106061035877753897017792724
20383565190273460089572422308786596099082777118384
61698260410070784701159414449266108262337220211162
06842127071577380564643031848004774552346355969473
80158935447315743771254851139948712414037890104875
31206125471462997165582673020127464465767256852875
97195698381398112995595063138451904522639678043780
92554864901519337058720939727695413676420509844655
33255654768934168398729076561282582335718312843233
34038807627093199052583351013637391210422142879882
88834070663653553250399084380202751637277744282394
58836416089458514108382409260301588374531155121624
42429387713219236754737329785086128029253629235808
95407141331844000244851492976171424210161268494517
15467627353910690811671414107918084980576681988401
30863827196932994784888757203961466001288086724311
30237490493120350674473256782869241929506905263508
92508129658940288181141974153190520718360943457079
30446419758908202302419640382651841359749712591833
87870147999685280453724793849922656063036951092332
29032535770772534549722889387292158964343229153881
42579343345653598305634815655531073647479175072584
22747561810757192978373234315527985754237184477544
13049992220365370656525834675912592403161625650302
07351606236400885105645941206132942233850464396891
04095651447703623945846928425470873778582208555917
90937180161858236371070200763632749789404621195478

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