A Julia I Ching hexagram generator using a QRNG

Friends and fellas, I present the most off-topicest of posts: you can now use Julia to throw the I Ching using completely indeterministic quantum random numbers.

https://github.com/BarzinL/Qing

May your divining hand be strong.

3 Likes

Excellent!

1 Like

I don’t think you or anyone really needs rand based on quantum, but if, then this could be a basis for such a package.

Note there is:

I designed the random number generator that supplies the random numbers to the RdRand instruction. So for a change, I really know the answers.

The seeds come from a true random number generator. This involves a 2.5Gbps entropy source that is fed into a 3:1 compression ratio entropy extractor using AES-CBC-MAC.

So it is in effect a TRNG, but one that falls back to the properties of a cryptographically secure PRNG for short sequences when heavily loaded.

This is exactly the semantic difference between /dev/random and /dev/urandom on linux, only a lot faster.

The entropy is ultimately gathered from a quantum process, since that is the only fundamental random process we know of in nature. […]

  1. You either need to use inline assembly or a library (like openssl) that does use RdRand. […]

Someone else mentioned librdrand.a. I wrote that. It’s pretty simple.

  1. Just look for the RdRand opcodes in the binary.

RdRand would be faster (but not available in older Intel CPUs)

I noticed: GitHub - foldfelis-QO/qrng

But it’s not registered, nor any QRNG.jl package, and that one is about something different.

If you want qRNG package right now, then you can use PythonCall.jl and qRNG there in Python.

I googled a bit and note q can be a false-alarm meaning quasi, not quantum as here:

https://www.boost.org/doc/libs/1_70_0/boost/random/sobol.hpp

Maybe relevant: https://vixra.org/pdf/1910.0163v1.pdf

1 Like