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-11T14:38:00.619124+00:00
8cc533f5fa339cc4011a78d18fadec140e9f5df585530bc5188ab6658c70855b
a799b2335a58de9d2deabbf09363b339b77802d31fee7c2ef36216a7021b0b4a
1683199b5af27d64d42465e8c91131d649930b14eb83469b0e81260c41098fe5
a91157c21b1670ead51c6243c4a8dd6238d8490118a920cbdc4213a5868d2a12
fb1723f97ae1676cfe977c55ccd433fc0b9d190d40c7d749cd79aa84ab8299a3
8e13bf843e6c5c5f2ee03bd4f905a7a322f8750af0f2f75b2eaef843a3e033e1
6586f35224094efb36c463146ebf3c9b5afbbe1136319128c128dcf42f17e041
f6f998c0d3a2863e2aa255045d8e7bdfe1b64c48259b4f6e3096c1d9f487824b
40442a331802db2ddf01d40d29688337506a9fc8f93e4a3ff15c7fd5ddb3234c
a7b778b6785e194c9e435a593309268911d1d9257e4ba6c1634999bf89c41a71
816e3b9a7a14af5797ab1634286ea39f6f9e2e4420dcd1c724bebc536002a9d6
32ad6e3ef099459a2ac7e7995c0d434e2b8b5fd1176ee658b1bdeb68bdd59c95
7021cd5a64fe61fc460ccaaf276646f54e1cc65068cd8864dd0b48f65b1b6b62
6b7ff4ff5cbbb701d5f597e2d2d3dfa46309517ffddefcc1d127f0ebb51f2b1b
653d3c11d405ac6e7aa84b34a601d5d8a17922ce60635e7f25554785dff44f63
b8066c78213dd6e09f80a7d55e518ae25f32ef77e0b070527e6c715a5490c45c
5f8569bfa1a6fa8c9a8782b2ab55f2c50065f51a062c49dea046d871ef997dab
26b4c329312178a7945a7793674eb72fa9369e8e57e6f15f0414a78ec7dadaa3
b1f70c83a198b11aebc835bb50dea461172610462f4a930ed0020f21c953166a
b8a96873e18ed7d6d8003ec0476a35cd402c37dca13294a918fba6bb2a7cad44
23263e9b04fba66848f6ef581e86b6e1185fe6a44860b7ffa852c8426bbdb070
fc5655baa8cfd823b26af4ff7c2d9b0619c7ddd000a86a5688be8be836e916e9
2af39f5b8497cdcfe2613e24753658d63d35447d82f356bdb0c1b8125dfaf44b
a59e7a275d214963181291ef2f3045785cd87756e53f80010dd99b98da1f8acb
d3fc340e6dd9bcdf0775505c11a1b52b8addad7d486858b40b3bcc1603d35f37
3e52d1452074f969d668360366a5eebbf76561a6a888c56b8f1344a9d7181b25
38918ebcfc98b999394ac040d7a9bd367ad39cba7fd7ac6a91918a54ba584fe8
9ea97234c596ba665b9d680369b8010e2fa6bc1499dae7fec760290f58bfed10
1dfca67ffef5b1f845d9bc07916efe0fb7d88f22d4bdaa282da68572c362b79c
50ad032b337e271ad263807d18317a74c6b656461bb3d7a76d6abacf1509e2b8
dfed96ccc4e9f3d91bfec79d2d23326345ef84a1f95eeba5268febabae5e631e
8bbc15ea5cf7936ccec1da6a06900182c88e438936718cd05a516931c2c017a7

From the PIN diode (hex format):

2026-08-11T14:32:26.217677+00:00
0322c43516ab3f3f3810fac85d5ed19fcefae33cd91a0963b4b37c4d4152cca0
c9a52569c32bd61b6b70f32019f0a4bd87bd27da011d23c415cf7d2c737ba976
cf431ac16be9f2bf93d16acc0bfd9d0b1d256008410b18e616a1038b7fa3242b
f06ea3f08bd12966c291c2c3e9d08e4261509264af8004505097daade6464914
c4155622e92d6ab5aa5bf2e75f14d383b5e45de669bdc37c60bbfd18c8f69c02
a43c7a07e4e04d89a9d19a0b8fdac29ab4dfd466c4984cd6444c8245175a4d74
b15afedb9ca8214a38e9a707bda43d8a61cb20a92390f9bfa5b399f89fd62b53
317c2adba06e2ac93f0af8af7da6dd85f7b6149c5007693d79ec9874cdb09bfa
8f037eacd21eec8b66137aa4b74a5eeb1e79ec77d973b6213190d7221a368d8e
96be9342319f90ed9c1905210e8592d0c6820a54360f7e4c1eb6c0b6dffd4df7
d132997b043e25696f67a65911c70809a52e8ed1cfc793532f5ad53b67e9657a
d21c1d85faffba98e9eb88ca8792cd5b261494f3bca6bd8f11e5665158956b59
11a06028a0a7e9fbf6aeedc6c355427ecd274d8f2c930b8962f1d8d981550979
a5c1565407e3f9a78c5a4453f45bfc8c628a46aaec9e5705266ba7f95a5b030f
e388acad485facee397896cac2d97c0010c2d0d9c181222706612742c3e4135d
4e2f101c39429fffdb7d198429f68d6c502f838d48ac90d67c96d29813f84893
3630986d99b0ba4f8a18d91bcd444e41923c31e771ea8f9a9be546ec0b3fee4d
f6547612a283a13bdf2fdacf1dd10aaa9d0a42a0ada2ffe7bb4a15df172b10f4
763f7d4899dbb56e574b5a4a921f3066c43b9a0905a7887f4bf460ffd9cc2438
e107472bb17f4c35210e4491aef5ae6b475cc51f3894b45d6d204f21f273647a
c2df75adc1986688cd6d3b261b9a789567e6e930e2fb28b51dcb9996a3e47bb4
a8a2376c2dbe55121ead6ed0bbeb9bbbe7bae6ebf0e60e04e7a0e1c5f54ed260
1bdb38bce6555404865868dcdcf3ac262049fb1750ab59cbeb5c220c6eec1f13
ba153ca0fae4f0ecfb843d1b74d0c8a95e307d2cb4f3d1d39125e736b8b3eb51
c8e4f71d463417e9cf148a71530dcfce3918d12d53d4ce079a27f64c344e0398
9c92bac63d2d8a3361e364f6e7f47b8a6bb7df7a7eff30a1522d6315c3d4929c
f6f37ba490508417e64913c8e2a54173f00226d279fd388806fababe33553593
3e437da94fedd76735af69e14edf67f0744de9dd214d9705601ee0fae33f8eda
ad7bdaa660fc09fe033fe0f4d4e4738b777f2650d88fe368102175747fc19732
798eae90328b05909419e88b3f3b45a0f0c2114a610af931443bf77a3f96eca0
763a7269bcb9f4e499f8b0f0e4bc10c7b1c391b58ee9586e32e8d8d028f2b4c7
58f48572dca7d73418a18de308925590e2ff55d426dc39d55027d2e9c1d41e82

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-11T14:38:00.619124+00:00
40975151569601262043732014599333831197243882014012
33916753785190885745874799795783200231244698226702
27117422312555902500360117497347112031705514293812
65094369178794272212289867966898567301246932661965
34414218233522030851248551115725136499732170327130
53634219913262089295465905676334171091467467635101
34823609785496992010916055909017544945409340472365
52926234624262850493422382767237557910485093353075
64684251240245011341043155800659627463922779357667
83208220942576586790895109383717372675669399735391
37962613291059542220758751712252401063591158466832
99369088839602695073106253695442995392136778433995
23108877890489564912339000977012753902707828988004
36001172912707980727928783015164990981279339813143
27016160170572102268755266016121349699942737857133
79998406082033615928679481389550197612822608139084
44969295330591616640543530787185970001260644736070
13532571388095414933206748901947037883476954584287
95042067429963771231615277265387806497233816704774
47140215338322068469041542006292710653644455615048
69246687422473683538625504660472883034822495647296
83688266078976128685866835780624455506259900680686
36903954224259913251976236175488615368253086897693
84189375655822399333739924184547486920921986632801
13555231385214098807178092176181433873257204888011
59220395556282693216050454030265870197666836970743
19686924273756454288528553577492646989542256862772
06454538848688795869145297508602915704030584011447
66882053999641158891162966277769880745101583433489
70404566331495988356807303435126392699282524492216

From the PIN diode (digits):

2026-08-11T14:32:26.217677+00:00
03349653227163635616939459602609998079247765826065
37059543270712322564893589390129359621254415236918
67269307914706115711293796086511242261033927633643
10633941029445949542669780460075280480805173707320
96218634450681709195203181930589952496872456026460
22077737695411439454800296527668763069239077167790
56683374566707896461389732693544916579535943834924
42601042631075256633822056800705612152167655430326
72303902192264837494302119158233494434265441425090
47664959445625053314334698301084541526763082928277
50532304623705110366891799080965464299478347905903
01222829338652363546913820488866894317028188490789
17609640606774989585662639774344471137982985092165
93868407674090688391409838707058870538076790910315
36727372957257205094240016949329343906973966951993
78471628576659252532414108804731417272442450521972
47544852095376867938242768786546604913435455701163
77841818623161594729107057106660736287742123431618
63257253811087759074463148029659540905673627759636
56077143772776533314684574740771929731564880930932
79331500229417739352023609593827542049034840812953
50632380686255084590851830731087558786140460977896
27568885840434880472383273238071899234121031198621
60603261271669944825448045375484798129705223203813
83135724458307543976527803525646869861453851970023
38078322264861824599219546562364448032237319656515
02382156360686905185534762672569790353750578031677
33775105963063427323669609036315391927388043041633
17162793515021427444503905444825396359696094177497
10496859226350601858140588855376881699779545814288

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