# Difference in length of RNG implementation using same circuit structure but different sizes



def random_bitstring_generator(bit_number, backend):
"""
Generate a bitstring with one qubit
:param bit_number: number of bits that we want to generate
:param backend: Qiskit hardware or simulator
:return: string object with random bits
"""

bitstring = ""

one_qubit_random_bit_generator_circuit = QuantumCircuit(1,1)
one_qubit_random_bit_generator_circuit.h(0)
one_qubit_random_bit_generator_circuit.measure(0,0)

for _ in range(bit_number):
counts = execute(one_qubit_random_bit_generator_circuit, backend, shots=1000).result().get_counts()
bit = list(counts.keys())[0]  # we have only one key because shots=1
bitstring += bit

return bitstring

backend = BasicAer.get_backend('qasm_simulator')

print(random_bitstring_generator(512, backend))


Executed the above code for QRNG using 1 qubit and received a 512 bit sequence

Executing the same circuit for 3 qubit code as given in image received an output of increased length as shown in image

Also how can i change the backend from qasm_simulator to vigo/melbourne/any other quantum machine

The number of bits in the counts dictionary equals the number of qubits in the circuit. So in your first example, you have a 1-qubit circuit, therefore you're dictionary looks something like

counts = {'0': 400, '1': 600}  # for for 1000 shots
counts = {'0': 1} # for 1 shot


In the second example, the Jupyter notebook screenshot, you have three qubits. Therefore

counts = {'000': 70, '010': 80, '110': 70, ... }  # for for 1000 shots
counts = {'101': 1} # for 1 shot


Since you add these bitstrings together, the resulting bitstring will be three times longer in the second case.

Side note: You are actually running a 1000 shots, not one, you should change the argument shots=1000 to shots=1.

You might also want to have a look at the get_memory method of the job, which allows you to run e.g. 512 shots and get all single measurements, which should be more efficient than running a 1-shot experiment 512 times.

To execute on hardware backend:

provider = IBMQ.load_account()
backend = provider.get_backend('ibmq_vigo')