quantum-random alternatives and similar packages
Based on the "Scientific" category.
Alternatively, view quantum-random alternatives based on common mentions on social networks and blogs.
Do you think we are missing an alternative of quantum-random or a related project?
Retrieve, store and manage real quantum random data, originating from vacuum fluctuations of the electromagnetic field and served by Australian National University.
The package is designed to ensure quantum random data is promptly available for your application by keeping a sufficient amount locally. When depleted to a specified level, more data is downloaded concurrently over SSL. It can be configured by specifying the minimum store size (below which more data are retrieved) the target store size (the size of the store after retrieval) and the default display style.
This functionality is provided by:
- An executable program
- A Haskell module
Command line usage
qrand without any command line arguments to launch the interactive program, or alternatively
supply the desired command as arguments to only perform the specified operation.
Assuming GHC and Cabal are installed:
cabal update cabal install quantum-random qrand fill
One might also opt to set appropriate store size defaults before filling:
$ qrand quantum-random> set minsize 150 quantum-random> set tarsize 300 quantum-random> fill
add [# bytes] – Request specified number of quantum random bytes from ANU and add them to the store live [# bytes] – Request specified number of quantum random bytes from ANU and display them directly observe [# bytes] – Take and display data from store, retrieving more if needed. Those taken from the store are removed peek [# bytes] – Display up to the specified number of bytes from the store without removing them peekAll – Display all data from the store without removing them fill – Fill the store to the target size with live ANU quantum random numbers restore – Restore default settings reinitialize – Restore default settings, and refill store to target size status – Display status of store and settings save [file path] – save binary quantum random store file to specified file path load [file path] – load binary file and append data to store set minSize – Set the number of bytes below which the store is refilled set targetSize – Set the number of bytes to have after refilling set style [style] – Set the default display style help/? – Display this text quit – Quit
Commands are not case-sensitive (except for file paths).
There are a number of available styles for displaying the binary data, including (or combined with) printing a colored block for every 4 bits (every half-byte). The basic display styles are hex, binary, or equivalently arrows (↑/↓) representing quantum mechanical spin states.
So the available display modifiers are:
You can enter these modifiers after any display command. For example:
observe 100 colorspins
live 50 binary
Usage in Haskell code
All user-facing functionality may be accessed from the
Quantum.Random module, though a user can
also import the constituent modules when only a subset of the functionality is needed.
The most basic service is to retrieve data directly from ANU, which is provided by functions
Quantum.Random.ANU module. There are two variants yielding either a list of bytes or a
list of booleans. In both cases the argument specifies the number of bytes.
fetchQR :: Int -> IO [Word8] fetchQRBits :: Int -> IO [Bool]
Operations involving the data store are exported by
Quantum.Random.Store. An important one is
extract :: Int -> IO [Word8]
This also invokes the machinery to retrieve more data and refill the store as needed.
Most of the IO actions in the package use a custom exception type
QRException to handle the unlikely
parse errors that may be encountered. Namely parse failure of either the JSON response object
of the API, or the settings file (which never needs to be edited directly). See the
Quantum.Random.Exceptions module for details.
Beyond this, the operations for retrieving from the ANU server use
simpleHttp from the
http-conduit package and therefore may throw an
Detailed information on the physical setup used to produce these random numbers can be found in these papers: