# Quantum

## DIY: Physical Random Number Generators

One of the benefits of Quantum Computing is their ability to generate truly random numbers.

Since classical computers are deterministic machines, governed by algorithms, they are inherently predictable. Therefor any number generated by a classical computer, even if it seems complex is actually based on a set of conditions or algorithm, which therefor makes it a “pseudo random number”, rather than truly random.

To generate truly random numbers you need to rely on a physical processor or phenomena that are unpredictable, examples of this include radioactive decay, electronic noise or even atmospheric noise.

Since QC is essentially based on a physical process and the probabilistic nature of quantum mechanics, its qubits can exist in a superposition state, this means they can represent a combination of 0 and 1 simultaneously, this state/property can be harnessed by QRNG (Quantum random number generators) to produce truly random numbers.

As a fun project, I decided to build a small physical QRNG using an Arduino, laser diode, beam splitter and two photo resistors. The basic premise is that you pulse the laser, it sends a wave/particle (both!) through the beam splitter, 50% of the time it should hit one of the two photo resistors, providing you with a random string of “1”s or “0”s.

While a very simple, basic and small example, it is a fun experiment. Check out OpenQbit.com if you would like to build your own. To make this a little easier, I laser cut a template/outline for the beam splitter for holding each of the components.

Enjoy Randomness? Check out these blog, sites, references: http://www.reallyreallyrandom.com

Non Quantum RNG generator using zener noise: http://www.reallyreallyrandom.com/zener/breadboard/

Nice video explaining the seed variables used and middle squares: https://www.khanacademy.org/computing/computer-science/cryptography/crypt/v/random-vs-pseudorandom-number-generators

## Generating Random Numbers with QisKit & IBM Quantum Hardware

4096 – Bit Random Byte String

## Bookmark: The most counterintuitive facts in all of mathematics, computer science, and physicsBookmarks:

## DIY: Ion Trap Quantum Computer

An ion is a atom with one of the outer electrons removed (normally removed by pointing a laser beam at it) – forming positively charged ion.

Ion trapping is done in a vacuum chamber to isolate the ions from the external environment as much as possible. (And avoid other atoms in the air from bumping and

- Consist of 3 components, a proton and neutron (called the nucleus) in the center and electrons which orbit this nucleus
- 117 different types
- Are elements the same as atoms
- Every element is unique and has an atomic number
- That number tells you the number of protons in every atom of the element. The atomic number is also called the proton number.

## Quantum Algorithms – Notes

Traveling sales person problem

Solve problems which are NP hard – and they can’t be solved in polynomial time.

P versus NP problem: full polynomial versus nondeterministic polynomial problem

A P problem is one that can be solved in “polynomial time,” which means that an algorithm exists for its solution such that the number of steps in the algorithm is bounded by a polynomial function of n, where n corresponds to the length of the input for the problem. Thus, P problems are said to be easy, or tractable. A problem is called NP if its solution can be guessed and verified in polynomial time, and nondeterministic means that no particular rule is followed to make the guess.

## Bookmark: Quantum Links

Good practical Python Quantum workbook

https://livebook.manning.com/book/learn-quantum-computing-with-python-and-q-sharp/chapter-1/v-8/

QCodes Github is what a lot of experimenters are using to control machines.

https://github.com/QCoDeS/Qcodes

Quantum Jobs

UC Berkley Course – Vazirani

MIT Open Course on Quantum

Qiskit Hello

https://mybinder.org/v2/gh/QISKit/qiskit-tutorial/master?filepath=community/games/Hello_Qiskit.ipynb

## RSA Security – Some random notes

RSA

A good simple overview: https://simple.wikipedia.org/wiki/RSA_algorithm

https://www.npmjs.com/package/big-integer

https://www.youtube.com/watch?v=vgTtHV04xRI

## Benchmark Quantum Computers

Simple puzzles which can run on any QC, providing a benchmark for performance.

https://github.com/decodoku/A_Game_to_Benchmark_Quantum_Computers/blob/master/README.md