Hacker News new | ask | show | jobs
by avdempsey 3032 days ago
Fascinating! I don't think the article went into what physically encoded numbers into the probability streams to begin with, only mentioning that this is simple. Does anyone know about that? Is this happening on the analog to digital conversion?
4 comments

It looks rather a lot like delta-sigma ADCs.

https://en.wikipedia.org/wiki/Delta-sigma_modulation

A natural noise process (e.g. thermal) with a variable threshold could do it. PRNGs spend a lot of effort on statistical properties that may not matter for this use case. You absolutely must, however, guarantee the correct bias, so such a noise process would need to be tightly controlled, likely temperature controlled.
If you wanted to process two coherent signals, I would assume you’d need to randomize the distribution of 1’s and 0’s within each stream. Yeah, I wonder how that is done.
I imagine the internal registers simply clock out their stored data to the bitstream in sequence rather than carrying it in a parallel bus to adders and the like.

I suppose that wouldn't be a random pattern though, each iteration through it would be the same.

Could you have a true random number generator that with each clock cycle had a 50% chance of producing a 1 or 0, then XOR that stream with the data stream?
How expensive are RNGs to implement? I'm not sure how they work. I think your idea would work though.

You might make do with a very long prime value like 4073 that just clocks around endlessly, which will rarely line up meaningfully with anything else.

It does seem memory intensive though, maybe these minor issues aren't a big deal in simple enough systems that this could ever work anyway.

Maybe you just use 127 bits or something to randomize it, probably more than enough since the goal is likely mostly to avoid aliasing. Even with multiple incoming synchronized sources if you use different mixing patterns it might work out fine.

In physical hardware you can get "real" noise out of a single diode with appropriate processing. https://www.maximintegrated.com/en/app-notes/index.mvp/id/34...

The effect is a true quantum process whereby one electron tunneling across the junction triggers a large number of other electrons into moving.

Nice! I see the noise spectra, I am guessing the long tail out at high frequencies means that the recovery time is short enough that subsequent bits aren't correlated?
i don't know how truly random a crc function is, but they're really cheap to implement in an fpga. especially if you're just pulling the bit off the end for a bitstream, and you can just feed the output or some polynomial into the input instead of an input stream. but that's where my thoughts end.

https://en.wikipedia.org/wiki/Computation_of_cyclic_redundan...

Yes I guess true randomness isn't really needed.