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-20T13:01:51.338741+00:00
c2df05cbf09df40f144fec9b0fc11ea292aad2e4d4d44d2a2ec84833728c33cd
f350c92e543b8659e425deac97c361029f733e313854a3d7c51419b52cee3f45
ac577bc55927718e190e3e66f374c064a11f5b03426852d0f9c6331cf8d7cedc
6011a7aa332e3ac61ebf4b0b72ceeb467a706df1afdf4d7b7a321b0809a476ba
c5da8e78b6fe089b36964c58e915d0cc3bc0e660ff56bbf3f1754c77f10a9f20
7c2ada272738f553fd33174639d2d282981c4dd5bed6cf401b64087d0144df88
9d09e61a1c17949385b53207fb649a754f28f4d833a0d25a71ef44d708052b86
830770e5b3cb857ee48183c607593bb1c8e7576eb7ab8e00ff5ed10175a89259
8b19eb767b74ec7552f12ee4a5f38a39510530eb967802e347f69c9477f7bcc2
1790557015f16e2357ad011cd153b8fff7e10a23c1efabb08435ccfff4f6bcc6
f4f42ffb098e445561c703025217c4a75b651eda43d43550a81caaf1239a2ac8
9e2f7e896f2b93228a8481c0bee1926b980d913e1531cba5a3a6a7b11a533f82
20533e0a63fb77c5d089333e80e8f289bd7c7ecb4ca8d45bd13529edcb6b3d8b
16c800ac9cc0f113cf98cdbf7e8b1e4bf1b031fab8f7d2dfa2222bb043fee9fc
7d14efcf17672140d6be6586e0d8ca866748fd81cc90f87bedeace0170de61e9
90bd1254f1ed9411e35d06c3c16a774463de5a01d524c3073e7ecf38790ed0b4
eb244efc43a32e9d8a8a0dabbcabfe3c345b19e3015b0d97ce30867a3c3db507
8725f5bd6a5f4a4427c64b6d8876ee38c3ad51156d152f58f7d3aa919990c0e6
b1d364c882071872453be5b43ed10297f46a1d2387f61e5b21f9dc6c725a8ec2
2ad20ac8e9adae978b8301affae5fece045198bdf98826d99566ace5b7a47518
48e260f412cedfaf72bb0647036d3e8ef0e5d3e8226a6abb56fd6aba44d3f728
62e627e59bce98ff8af18ad4e45151eed02b36513769396b7e1a5fe93bcf51d0
4ff44b739745a864af0d1abbe4a61e65a1df5873a29b9aebec000d964d29c481
51c530745d5cc813422a11fda95469867a5f670ecfd66821f571a02506901b7c
236f094439d4b6aa54ec5be11520d4f6dc0fdbb5e7c3ec840235756106936ddf
98933c570cde482b49962a97b9f3780c886c22b96a3028494c1871b5fe1c543c
9b3ed6b0eb919f7a1ffb2d6bd578d13652eac334cad1c9192e9774b8badbd144
ae1c631a343e585e26de360901ae9f7c07b9b2beb018ffefc4caa46ce60857d7
5d7b265f3c2782a133874a07bc8924ff265e69cf4685e56f8d3074d01c833e75
723ad4a924111a973ff292d860696afa0a6dc37cecbdfddf431c9a07fbda0a44
084d3cc07fcfa287c7f7b09eff9daad276df7783d4ebd98a8e10aca8e71d1284
9be0ee4523c3009da0e1fa576c88e2cbc80fc33eea21d0d0330df6c9d1629236

From the PIN diode (hex format):

2025-07-20T12:52:44.733906+00:00
8cf066351e515864a33b86d926dbda030de535859c3a5f08d93a77e49fb36440
2b1306b6ea9dd4e0b43869986f599bd92223b43426ee60429f7ec561db14ef0a
3b775f52d87775b76862996d093e58f633818062086863da56c23b7e44b3cc05
feedd750bc7f018967055a117712923b2a3ec8e023fba37b97bbf7b71985784d
76ff9a67eb54611b5c242aa09c82a7e78ecc8fc262f33b983dbae598dfe867f9
b823107aeb779b27f527a5e77f4da2788c33391ba039b28864c667b2546c410b
07f1bf703d065fdc0d1e3841317fd7f0961e341d89a963aa4509d48434c68cb6
d568d8db05c411e5bc66791d772f16fa7295f0b7d2b5cb4407bc45121ab59590
8c6fdd728a08e6757c9a87032742530b1e94c84ca54fd90a467201384a1f8d75
0710076fa3a0ab5e573776b1907eaacacbd30997f67110ce377b45252ded5eb5
f4f1b1ce56ea75c60b55c6410d55b46209e7b7b5e3978208c9aa465f988014f7
74acd1ecccacc88a75aaf25dfcc67f580d23a45ce4a143566ea470298972da40
2608bf8115951d8370e3b0da6e15d8330e23d2aabbaa485c6b195d65707dc10f
84d7b6002011644fcd6d90d72b94468f42718c967b0d366c60561f9b17fc8481
3970e4d53c42683a2345831a519e4d5cde577fb5f9d7731f0df9168edd0441c1
94018b2ae288729898cd1d4a19665787963447af21c5e61a92d31a2a1a14f0d3
fd7e9476421a025b1c748314b1d7219f6628adc86aecc701f7b2e6677687080b
3f495563bb83c0b344221b2afa54071fbbd2f3f35999a618d94f3b7e2c000224
196d1f50e950571d106db70100f1b53aaafc50d193a69363f82fe10c5eed3a5f
0924b2cfac561ea304938ce15a6d9289878d4f28161e527a00ce099da5d6e1df
f700e1d7cb7ce16dfc95c197563fecbe3eaa8fff16b2da2055e6282200cb091c
f1e1daa0d76b708ce88e1f8145d040566918ac82a1d2aacda6e44f926a7396fb
594ebbdc201231f91f8ff60125f7f45f0f2a9eac5786ba9feedf8a67792f4755
26fb18a98847df224bc87b6bdff1f56cc51d0e8a705532bb92b59b1b63a97976
112fe150b547cb000d50e254022b43f8b1d5e2998e3fee424eceab1297c17583
0e7125174e59dff8d8ad4b850b1872f5b1e4c4311b493c9b101bee4df6619552
2f6363716272c43786190d16aa4c802b81ec07c014c6c333a951289fda7aef8d
6017fdbb221a965fdddfcbf7d5c36e478f53419e2ce1cc97a9e3a80d0b52303a
6475cbbfe96233bf83f772142fb30f7f57362a5a2cf0edfd4588dcd9b79accb0
73a6370b40068959e9df20dd99fb807b7b0c0b0be70db7b5761b1029c95d71c8
85af14d5d1c1598d0c86b305211c7576d0542a213bbe495f387597fbb193a4c3
c8649b1d7ae28e013aa553be062d3b61765678ef2424ba8faab4e5d6beb831bd

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-20T13:01:51.338741+00:00
94055715207955159330624670774246725114405180468459
34893772519597025915624956846397202581446369728723
97893913422514620216920061319103660482985128961767
70514658983091751114702212097577232250270809641886
97422082085554507688215992968687177619105932244239
39568351237057305228779064270008250168365709262823
48473381500700541779405160901368080543343107127933
26293198078959778710837142009401176846893925182316
17824665385781054850200271564819889423448512211035
87730128838410359371763253889847094268859799030282
23966791013067538068287035544258472637114347343832
29929046075213456221496563666777268363303283621099
19973751622837892426766891534107613922007256921952
91263930757649846234437667252023033364900134340372
29442301129744891884481793069593061968999001369507
62265621148036786763465738381371887160529125019113
51483422606181073537890695746839987509361856957381
21092147887045534492770030072414695980620251062935
35309133081490429442107374513931017504815289363849
02728364172472961875148706710309624234060687860686
68409839555238388181435481550557072626955981797515
51696800751326876630016188156255540013507741962981
97481693921966421769840534229503140433136037064427
24351109685782708491213215819532025317970647095247
60871272437350425185201236083485064840737624138128
84605562764559223145072054829552254651168486687428
99265262889438540901745924078578907624966408088793
23389560393061513574078837363894057033114148162831
62171458693617265163469605061009952489672854071068
08776092276235997658577018193138421672682918325569

From the PIN diode (digits):

2025-07-20T12:52:44.733906+00:00
40025330818800635934380313533356589508581959790064
43190682578056055211895534358052389666592697972010
59199582191783049853090962885129289808049986945926
68790580882701370305901719184659426235632351878325
33207718540384972792364260563067424394985952618652
03843516221955393965277762204051572760577836009803
78840865110791126106951330566549275030522937699970
69093252984082040596178802212919472214498381680788
69182681494440111438081724543503396683113048766579
10701401567431411707160711636071948755187744267009
51131655236937459481778617981185986513858098098381
51300870709552282016727238177093982788133564926167
86106412413714643808912921492931127610215114357087
70729207259301122593153282003217007909444348704366
13405023135408968631552332295712606604583569312681
58779287278115311322420465934801394236145252297425
02873550527175339726462642262026481866260291281631
20773359024073069901780318350811637385998731927968
34274284073187895366247959264400023625093180808729
16098301008158708047664799471294589509367872863063
04474090094637354179402230822200095765002409499351
86639062704322783285403400092860071240423129696486
05247230617066794606155089788732184931430137951542
58728734865938032147718538246936713475230708972914
38128550874681552799692118174780817100138084024367
77534263667871185193173114133723788973753311241477
96492773605516277797498247999913981496553425132270
76284329079220989551698140592241962387342650959510
71438365584451696813118248580017919851913114204779
15278754429044693683547615665511640637893253282323

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