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-12T10:30:42.891971+00:00
1894e4a9f3c29f31a87836ea161567832c9429eb0232b28dbccaeaf7c6d5b849
bebfccad651fb54929cf330af92e2494f380079f81b0cfd51db1dd6e5f1566b7
bb3433633dc79ef5ece8c89c29084430371082baba5b5121c84dd40c6934c345
6a10296fee24538a88e436676a34a737e536221cbc9ca9fe2d76904489ee86f0
c75022ce40e543634ede0331743795fcd82f2fa77ddac29cb6034d0939752ab1
d67d6cac2d0882d3d1125db6951c2ed9be97e9dcdcd6802c297cbb7efedd3b57
e773ecf8b68b36b98702a2e68624d8c24dbd8141767191fe8fcb6472e9b546dd
0446d1b95347bcbf53bc095eeb6c01c5fc3d8ff47802ffc7f0a914f505800252
c2b6224510dc24f5d0fd2f0149b3169e3e2603e26f90960b95111bee2b0cf4be
96f2b15fbd8a76023ce1bb136422911da1307bdc95bddf08f81964aaadf61ca6
40b975e10a6ad50fb6552998e83bb860ef281778e93e264831208f84e7d820db
6f145bb151bd9fe8d3a4503d1b2ed7f5cf1f40529eff0452fb1e5d8d5d00b35d
63c69491179b41a04ab665f31713a49d27108c0943bf8913f4fc749f75d92b1f
f9ff228590d08958c13b4aaebc69b94a5ca3ca2aec019a016ee301f173e2c902
6e38b8dc82615db18e697029b381bff3b315aaaddfe0f6a554202aeefb208e68
614de453f1e1457bbbbbd9449e60bd4dd596114562e4d282cfd2c25dd3598b39
34f76d0c30d3b16c72548c7c860c052ef95f2fa37e38bc8d4509a88b1ddae23b
f693d4189ead1acc9ae168b646435294ff03f2bdedc058f54f900d2952645ca4
5188953fc5582b82fd060c1d557ef13b9c95c0f6e3724afe7cf2350899b891c7
48578910aea4279c040bff7aa113200af61d4935761fd61f3121904ec6d205c3
235966ac8eb05a8a5dd4828f063fc46110521c9dc86141b26bfe18bca8a5aa80
7853edb2457e5c45876c37b598f022c1b4ab00d84c017dcec0c29bbec0b34c00
82843c900c5c78dce10ba7c830924b27f53dc6ef672f616f3e457dbd47b49221
5ebbc267b7808318132523e1a044d20caaea76f1957d9aee287676761b097b39
32e4e9eda04ee4d3e5c0f0521fdb832bcc858acd9111769d2494f72e01f61806
1eed479dbc067fa4c9ceadfa2781cf218420fb5e694ebb5e7ad633ca57c83f20
af34d2876f30a9b25301be46d0ad8574e2ddf91d86dc4948ee6a4495dc85b5a1
eaf343bd5e54485d05025d5ec9bc4f55b42350d2151ab5395508bb564dce5c52
395c6226bbc1e1fa34eb60219a6721a2f6a9a204aaf1beadceaa32ec8ad84b74
77a780739a81de092b56283648e907afebeb93af60f535500c191b70124bf35a
0ec50e8eaad68faa6ae904c305bb0dcbe9ee38fb6ff80e1cbf70f5c959201a6e
f6d1a0448bca92a8b95e2ca424b4f378e7b6ad037da3579bd3f0e0c7fcaee258

From the PIN diode (hex format):

2026-08-12T10:27:01.891044+00:00
1b147308c3620202a4db579feee74ea2a12eadc6eaf0211329836d5ace89b912
47631be0aad051d2b624ac724821bf8fdc03bb1685c34a36c0871ce632c01171
1c4edc4e10515ad246cf662cff289b933fc54311a2b796a0047bc93c561c8867
392a141de807a30b31882d47d98e497cd891011cb6a9161e741c58a59a54d5b4
b43456a7db1699e08e78dd475f85624b6fd0cc67f438774ffb942005abaf8c8b
67667a6557481d704141186fe64cb67b125c7480eb9bf36c8cc460ca62453cac
e692cef3849cfcf714b974c700c297224bbb0a7b201240a84a79e97431d7e57d
14a7ec20480b3a25a14939e2521321c446d32c1c99fa048f16f2cc70f0aae1e9
bc519ae809616b5ef0b66d31e00e7649f4ed668574a67dfafa9a3c02bbd05977
32baddb983356183cbce06611ae6416801fa7a67b6b10ff71bce50f1ae1ba2c5
bd8802f8a9370d3c6d5cf51e81c102b302d893a2f544fb19c75ee3e0843d90c8
26f83321b0129dc6af4ed0946d8eeb242701ac9dacb822f984a7575e7b22def3
db318a0f33eaccad503c77537b4c024c243edf8282f724d23b09607fed897c1e
769b985e3e43e9ac8c9f0c1c68e8eae4d4e54003323374cbe0030fc8acecdcdb
498fb889d22bf19d1244415720345181f43ad900fbc0159df0ac244e29731dc5
7ebaf6ded7bf0ba6715327cb74fe6bb620d5ceb9b9aeeadb2411647f850db5ab
d704f0ed6a76555bfbc0a1705dd0cf7cd313c2c2f1b904409f90f782f27c4674
942f18188879f6cdfdbc9b56c894e47ab9a06a750b06f6d32d038ba3c1d6a082
a73f0fb3cf7a6f2e64f788143022412cd79233d5770f29996f2203945574eca0
6764e7d5171b91421cd0df04e70d5eb18a796db14235a8d40a144442693e2bc6
69823fc372721b05bbfabdcc8e9e174473fa63d76fb5a390b4fce112e8d537bd
93b7eee60448d5fcf4fab14c7b19f43fb710dc874858309dc6aa0a2db33d3f51
e0f516681c3467d6cd5f728ea4be9f63684dd397aac78b28ca7ac4c34d6bd386
fbe2b82cf347ff428c8f0137fe6f663381ad2647c860b0d1e93dc8b9dbd7ff3a
8b3ff87ceb690b93500ff6486217ca84edc1545e9b9f4307810b0b3441064dcf
40cad6c72c0a9f5373f8e325b08a31404d0e7d0559f8be8886d547794a491daf
7df9621924249fab6a0c715a0bb75f75a6fb3ab8ffd2157e57d9cbea5452ff70
d89ef6a7eec361206372ce59b4dd15ae7d6b1b61b051e76fa8d2ae2257aba5e9
6492ccffcdaa2e015b3bf98571d31ea575c453e52e27b7f337e0fadd2371c0f1
fa45e2c19380ee5b4bcb09fe63526064dd564c02a4cabc2c6422271917376022
07cce19a3b28a99c540c04d61c1c1f8e64990039b4eb8909306aae8cbf4b7c1d
dd9bc061f6a3cc09aa4eed5a59f6839ab8182592b04d40a88454a6834c9a352c

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-12T10:30:42.891971+00:00
24486994594968205422210331444841025078418898847390
91730131817341511046364828075929762977109521028387
52519961995856410868485516308686918133771205529569
06164111368338365403065267555434288856694518446837
34998034646799780349165549474767259456820377095717
42772508724508301893824928469051284441248726598715
82395485350262343694778929651813454300148170047085
83718891838809940801976143200299692005280282948234
69163647017379225862380311445011491727431290507795
89381802608719003445296148234989082500707328666485
17100615828541525984964023206238724932433232112091
77818959648061274631648258048230934193007993999848
45235565607482012319645739164009679137191659174331
34334437889359747488058574926342015401100115021056
84309793774205124179299179217073658432423242049777
83692387876858968977501769983094938939575209124877
08148440243412054695476326568841690968392959472458
73265404827067824803899288794413418200926481364963
97884330061229852659564992147424530853844599728737
16746439560411226119321029735318313149334478980595
35890272427690389330430663969716822857976578072488
68657028208378692692693508558152349380710076012592
94559092797600303260441292201167484675396198034797
11626925897180463394879403832831241937356068127018
49255440181818270923575060789282313143333845171857
36484601240630715788062764733929333232940578879422
51876332755235114869788301907073331629347372066849
33816167899484729305029394887985803580212681578508
87867792825792983887935296335403336269620470907370
50387516196728155429094386405472077547759653801225

From the PIN diode (digits):

2026-08-12T10:27:01.891044+00:00
27201508959802026487597862614673983319413109903785
18719927708182367214723391430387223395745492352850
92171328787816819070024440554763976717628350600423
60862836035742202907631149364571427324450128826922
30162888655484808052866722534220719533987511035619
79483205717540390302220187722912656524117682231892
16285508409696986960724632562085169900945134758710
23321864687421164925206732721158376173578219339670
44285304432212708881540997079482094914187302331666
25546002878919508685315397310697266504012203827715
27807427629789360269551360099230299302790247626825
99943261443851337618579875784809423639017257728434
32678794233449381551738060198323760276366230303659
09962737243018555294626772405912280464035051160315
72734384374357186865873252812958009221577236784115
29972686911166138339160782328585743617002733138171
04061885919261129324199494850464594430247016484724
24362188558648228560061711064503396393603067631579
22114600362048346544465119154153113403488516600300
23274566280413947738210977665368102068660562439805
30639514142705878942582368159911816344801855894783
04727776232563831635728848579870104579616381220428
52039514426490599904775170993940229695770734844471
66404301551102512973387196766185583963240511478015
72982332938494555967072911115265067764994410598315
37763849647714250589903634712174732975259825363659
71061213901183951766588421268784821258679597329914
89802174250727977681116874348771650046704601915933
13306517968346398355351392699347289175099982960086
76026488440034392523559634075459406956841204282831

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