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-24T22:51:20.551412+00:00
1c530fe169a97958a0738cca353acb77d83bde886d67b08fa058cae72ca0041c
467483dbdedd63947c21728572dc1217774c2ad01b66c8a08fee309f54778595
08ae2aef0e0b9ce5c0aea5463e39cd1bf06b25f23e61b69ff1fe4809e625817e
6d303c4e8d35b2f7c2696e9793d75907c360fc8fa423af5b8a61e7efab68cd84
c3f35e3995024dcf794f162dd358dc732dea8545c924db4b222555f11def6031
864785fc11f129aa3f4506381bf9666a6e29928e4d060d9e1ee25275f2e7b36d
2515d2271f30b8f9d3499242af4214fe1a7c1c173472cbc06da5b4d9b879708d
306ee78bd6001f9d03f79cdbc8b4e62feb47055484c599a5f4496cf90713723a
e3493730331b9e34f718668478b69d59c6fa67686af86eeb7678b2900ceb835d
17e88033b2487a59edf2cf79397bb17880218d837fcdcad7bf8acca9f6121229
5dd81abafe1c07a50f6eaff2897cdc7a351fe0ee50f85686c61ac6b8710383a5
50a9673af142f083a7a9bf8c24ee55ea63614bf4133c8884f6bfe8f882553d56
b8f54e600437c640a4f58e94d17d599094c12c349ece1bba66152324f22546d7
ef5da6382bffa7c3b945f73e8055f772889a981c78b7569e3ebce587633a91fb
df974142ea60ad34b7fe6b8283974e6a468cf9e6aedf00a98e47c6c8bfe648d9
712705ae54323a549f781e351a6ec5816a5faeea3f3cdabcc90a3ce31b53c2ed
0057edd0981f3aec13b3d18622a5c5b60b8c3534d6f62cfc57c9a04366b95801
dc4c41cf487c99f11c7e6504801394ec6d457b7193d49751360ba716219e4454
3160f97437ad90a72cf402361f3cd91ed7b38da44a60cde4d061028d4e1db27c
f98ad692a1128f8fd6aabeeac83a4f88401b3ce3a6deb21d5b599798cb37206d
1db3f31e3cd1fdc2c2c40a14fe1b314d9b981e244224c9063859ee549a402a40
978740df77c83df41791112236eb3fa3ada2fbfe51669b23d4eb9a21341e1dfb
bb83674a84e2680ecd9817629612e60bad2043f61bcc89cd6d40dfaa26b0450b
e6de0beee376c6f5eb985c733ce3ff18338f33cad69f8f8afdaf7eefcfce7629
58fa003381cf0ff922b9f57194cf4527347d3a267638200cf5732c804a919924
9c4d9a6b70d6fe90665177134e85d22af7b3f610862d1568e960fe74a4f402a6
b2ca10072aac743bccdb016375cc2351f1541da874f681d97ce1a2fb3b376b60
7328378f50137c92bd0f2e33d2617e23a8724532f7fadf005b500ab709bf024d
683408629af82d91b1205f91d427e88f85f858de93875614ec20801fbc51b6b8
a0c12d9d2087ce687174fd38c77e9f2f5f266f78c8e38ac2166e33147e2619ca
e5c2a1596b048803ac5ee182dff213937127ced2d2069592d45718f82d532334
de50f82c1daf67b69e30e675162910739995889644c3fabd443af006c3ad95f9

From the PIN diode (hex format):

2026-06-24T22:42:38.949478+00:00
93c3d84ddd97658dfd4cc5fd34e38cf6db0ede4861fbc73163e84156a3dd40b5
874d52c61e9c0e9bb5c047a9bec10a3d39109a53475c7dbc07b4a3d1cdb4ced1
cbefbb685a2dc3b2888b0112f54417f84209cc368f1828efa7a57cdd97a6ad29
e43f8454a8e0579cb79db4dd92225278ef440a0c010559fad415e29ea0455a52
855afd90262bbd07fedd055400efdc44b9805a5d04b4ecefdd30fe9e0a8b3f10
0c768c75d10cf1b8f00934856ff70edda5862bb58b0387c23347b1908fdaa556
1364f5c65b715f1b31cc8cc8139e2a9b92470a0b4153f1ec9a4ea3e4d91b5e62
10c63757dc84cb2f6f49f983737720b9a7a5e34be49ad1040c25aeaebc545880
e54f9eb1af1c4c9b3754d2ca8f4acc91df82aff904fc90d777c662a37ede561a
8810dc603349d52a8d59442bac58b5de3c5510ff2586b798c1bdd58cebb11216
ea2f45a8ea205f627ea7ac7f9b3f77ab3c243866685120f8df08bf601ab0f56f
3406389a8a771906fb3a1faaded1e0071fb922afb081d38141087a7e0a79e81f
fc9916979ee6a2f30fe297404d11e872f078023c5abae1aa557b160f943b0893
f99f00cb35e5a6fd14deef5f0382c5edd7e3c6d587fa3f0c56bcb59d427e203f
0da06d1d9d177d017dbbcef651157225ab9c400f31743837b59ae3ec2e21cadb
b2aa2c4fc35d45b3c50c7f8d4f6ad54e2e574e6d38c1253c2105175e7f5c7ce0
24b5b6188e3dc112e3666c2bd501d2163f77d745f2e0beaa791c414ca4148805
e9b6f4d0bc2c02ed46e3c25bc7bba4c4b89797c6776d786ecba174f2579636b4
2389029faf906ec61ed0f563f34c689be142ac21d2a33773105aad518a6d6c82
6c47b1839e8888025b1b2d3461d3a5ba435eefa4ccb9894f0736d9f38f8b82f8
98a2512c60cc275d81c15c65f00b1bcb2ae113c5ec1bb42810d50012410824bf
fe9b28498f681ceaf4eae744366cf7018ef75822f0316d7770835594f8228d96
bb51981f8c2ec64df2de03b718285fc904bf6a00949f676b829628e74641a50c
47bc9b513e6c7445b60d5fbd2a7e43ff30771b96e2b0281b5d65de85a68d1edf
58503b2bfa5b13b31ff5a70a9c59551d22c9004f09bd382bc53b3f96440e443c
49ae466a2858a9116d0c039193d833466418a6985a79215c1da2069c6e9b176f
03db7fe3c5f73110745ccba2bfec681843da56c182ba9984890584ff868bd0e1
a80f9abbde22c2ad8d12b4f0152b6a72e72e23c2d60aff2fcbc306f446e345a7
522c3fcf472940f1038507fc14a063727e21a6478804f024a1d6daeebdeed2d2
d7c1d0cf38726129f5b26fe537efe5f3264d4d44e4097a177a05650b8ca67bd9
cb6626c5e914e5462a9ef1f5d6baab8019930220efe0db55fe8a692f13e826d6
7a7a78a5ab7db39b1da5fa6d39940a34cf76e4b4214c244a588ca3b2ffdf98ae

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-24T22:51:20.551412+00:00
28831505692188601540535819593609037643608844600428
70163199482433143314182319764227026043485984193349
08744214115692746570625727073762978259720937292609
48607841537894051051478907959643643575913897710432
95945749027721792245881545336936753437852996493471
33174170636906562702061041464277061358308217790937
21393148847346667566202624282352149209658084211241
48103900315703568047710584329753657308071914587355
48512758522402322082578998030406101820784412319323
28517872228921572377202833413127913869181841932686
28076515107537242253318086349826988413033165806903
58663167699140368599977519603632913085618684789604
55986464424825894448934452582786022135363770936656
43679585696228851436545228208386586288359958455165
66967352830730315178067040740069427198917213390574
84505884592030532610972906957463608810602783940087
52315819793434659782114053524487606702858801766572
24532826010428194809692313475181541167223358688449
96165573446744025431603079416474969702417829782438
46611843437090587936642760667829918951525532092979
30609494961020274977555230366636065689845464426451
35641961234517345463637362810255355433523029873103
74320414522398501811733267273709647038766911111898
52921560245143515943387526184188005129153485134869
39522558381856321215442874455336567754071244028119
19783342791634452104961664026678160742721659019917
35818429681629246259550796154055438019244689154651
97263568146950009180108309910277045208985445457732
95453943338847358620322831888182846093455732350413
16569926594795381120389422105120263825946189070436

From the PIN diode (digits):

2026-06-24T22:42:38.949478+00:00
47957751014176975240147297994999658663648135778298
30561455819271699093106157165483719225880780638087
04904595783639011868236609544324406765245166734163
32846887568357804634822068101201058921586069908233
90443843890705840068852890930480485810396316121840
17128409523311146534438139033594517177444365861900
98911395274940195842554671101165835478632794981698
55873247117331151932856765755404123774748884882879
58777528765555844374453075044419989863268626361696
51734241896843728881608516373483529389407718224769
68329598266772275563197160365602048132089196267611
52065654381925065831700731853475762929650822261021
31532251586215516477171420026090867085232215485908
47590053662095033097983563128688815766263263136009
29572325012587812114377156641549165655815446337870
44799593697997122741790678468778095693376033052394
27922436818224426193180208430122631969907021286576
64203605828844027094919987649684515198190920106116
87505480353702597544109830997604556672336355151690
73813809083008717731583636029127455297658667946485
37790754433930526281449639932993920111274219972780
40160018650836915540734304286854080142883449091912
31854834415087815231404698770383244095049106004859
03073050407065651271885581620816698213958942266748
19275076402793013366413088805943911979316710568985
29340079098956439759635068146860737470064088691709
12034547517000246652902133922962065610552311032797
49161692629104246786933086533237053234396815548734
94734118802143061446359410479506706967824463714164
03330720609914263366713604366189935614974178115538

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