4 ms·
Perhaps I'm mistaken, but it's expected that the entropy test should fail. Because the noise is being scaled by only 1.82 each round, it's pretty simple to pred
by wallacoloo 10y ago
Perhaps I'm mistaken, but it's expected that the entropy test should fail. Because the noise is being scaled by only 1.82 each round, it's pretty simple to predict the next bit:
> P(next_bit_is_0 | prev_bit_is_0)
> = P(v1.82 < 0.5 | v < 0.5), where v is some real from a uniform distribution of [0, 1)
> = P(v < 0.5/1.82 | v < 0.5)
> = (0.5/1.82) / (0.5)
> = 0.55
So 55% of the time that a 0 occurs in the bitstream, the next bit will also be 0. You can make similar predictions for 0 -> 0 -> 0 and 0 -> 1 -> 0, and more generally, x -> ... -> y -> 0. As a result, you can pick an arbitrarily long chain of N previous outputs, and then compute how effective knowledge of these N bits is in predicting the next bit. It will not be significantly different from knowledge of the past infinity bits, provided N is "large enough". The higher the likelihood of being able to predict the next bit given knowledge of all previous bits, the more compressible the data.
By extension, one would expect entropy and serial correlation to also fail, but these all have solutions/workarounds. If each output bit produces M < 1 bits of unpredictable randomness (i.e. entropy), then an algorithm can be developed that takes k/M raw bits and outputs k bits in such a manner that the likelihood of correctly guessing the next output bit given all previous output bits is much* lower.
Typically, a well-built PRNG will do that last function well. Seed it with k/M raw bits and read M outputs, rinse, repeat.
Hope that wasn't excessive - I wrote this as much for my own benefit as anything else.