Skip to content

Instantly share code, notes, and snippets.

@primaryobjects
Last active February 22, 2023 17:53
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save primaryobjects/e1a5ba52da6d482e0f00d3e2e8a590fe to your computer and use it in GitHub Desktop.
Save primaryobjects/e1a5ba52da6d482e0f00d3e2e8a590fe to your computer and use it in GitHub Desktop.
Quantum Computing Random Number Generation. Uses superposition, noise gates. Create a magic number guessing game. ❤️ Sponsor me :) https://github.com/sponsors/primaryobjects
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"Generating Random Numbers with a Quantum Computer\n",
"================================================="
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"from qiskit import QuantumCircuit, QuantumRegister, ClassicalRegister, execute, Aer\n",
"from qiskit.visualization import plot_histogram"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"## Baseline: Random Numbers on a Classical Computer"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"import random\n",
"\n",
"numbers = []\n",
"results = {}\n",
"\n",
"for i in range(300):\n",
" num = random.randint(0, 15)\n",
"\n",
" numbers.append(num)\n",
" \n",
" # Count occurrences of each value for plotting a histogram of the random values.\n",
" results[num] = results[num] + 1 if num in results else 1"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[12, 3, 9, 1, 9, 11, 1, 10, 1, 5, 10, 4, 11, 9, 11, 0, 14, 4, 13, 4, 0, 3, 12, 6, 14, 0, 0, 3, 9, 6, 9, 11, 0, 5, 3, 5, 13, 11, 0, 11, 3, 1, 9, 10, 5, 2, 6, 5, 2, 8, 14, 11, 11, 11, 14, 5, 9, 4, 10, 0, 13, 15, 12, 13, 4, 8, 6, 5, 3, 13, 11, 13, 15, 15, 8, 10, 12, 10, 5, 9, 3, 4, 10, 5, 0, 9, 12, 3, 2, 5, 15, 11, 7, 10, 9, 15, 8, 14, 3, 2, 8, 3, 9, 10, 15, 7, 10, 11, 15, 11, 13, 15, 3, 0, 5, 7, 0, 7, 3, 9, 7, 3, 7, 1, 9, 5, 9, 8, 2, 6, 0, 3, 15, 0, 4, 11, 5, 8, 14, 14, 14, 1, 8, 15, 5, 0, 3, 12, 5, 3, 5, 1, 4, 15, 7, 13, 12, 14, 13, 13, 3, 11, 12, 2, 6, 2, 5, 3, 4, 6, 5, 10, 12, 8, 3, 8, 10, 9, 6, 5, 1, 15, 0, 12, 3, 13, 3, 12, 9, 0, 11, 7, 10, 12, 12, 0, 6, 4, 5, 2, 9, 12, 14, 1, 1, 7, 9, 15, 15, 5, 0, 13, 5, 2, 12, 10, 9, 6, 7, 10, 9, 13, 11, 14, 3, 11, 12, 9, 10, 0, 5, 0, 8, 4, 10, 10, 1, 10, 5, 6, 10, 2, 8, 9, 10, 0, 10, 10, 3, 15, 14, 8, 10, 0, 15, 11, 12, 10, 0, 8, 10, 1, 11, 5, 7, 6, 12, 4, 12, 15, 5, 14, 4, 10, 10, 10, 10, 5, 8, 8, 5, 13, 6, 7, 0, 10, 10, 15, 10, 6, 8, 11, 10, 11, 3, 10, 5, 2, 8, 1]\n"
]
},
{
"data": {
"image/png": "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v0rP68Qx2WJMhWHXoW3y5Mnqz4qi4K233sL06dMf+LtffPEFNm3ahA4dOqB79+4FLjt9+nSTfoy2bNkCd3d3AEBQUBCaNm2KI0eOICEhQV2mbt26qFevHvbt24crV66o7U2aNEG1atUQExODGzduqO2tW7dGxYoVsWXLFpMXKCQkBG5ubti4caNJDd27d8edO3cQHR2ttun1evTo0QPJycnYs2eP2u7p6YkOHTogMTER8fHxarufnx/atGmDkydP4sSJE2o7x8QxcUwck7XHBPSAOexxTKXxdeKYrD+mAwcOoDDs7uzR+xkMBly8eBEbNmzAhAkT8PDDD2Pjxo35nl0RGRmJvn37IjAwEHv27EFAQECBfz+vmbaqVasiOTlZ7cNRUz/HxDFxTByTJcf02gLzZtoWj7K/Md2rtLxOHJP1x5SSkgJfX98Hnj1q96HtXj/88AMGDhyIt99+Gx999FGuxzdu3Ii+ffvCz88PO3bsQM2aNYvcBy/5QURUMnjJD6K8FTZ7aOZEBODf49O2b9+e67Gff/4Zffv2RYUKFRAdHV2swEZERERkrzQV2i5evAjg3zNDjX7++Wf069cP5cuXR3R0NGrXrm2L8og0Yfr06Xjsscfg6emJihUrok+fPibHXgDA6dOn8eSTT8LPzw9eXl4YOHAgLl++bKOKiYgIsMPQ9scff+D27du52m/fvq1ee+3ekws2bdqEfv36oVy5coiOjkadOnWsViuRFu3YsQNhYWGIi4vD1q1bkZmZidDQUNy6dQsAcOvWLYSGhkJRFERFRWH37t3IyMhAz549TY7FICIi67K7s0e///57zJ49G48//jiqV68OLy8vXLhwAZs2bcLVq1fxn//8B+Hh4QCA48eP48knn0R6ejqCg4Px7bff5vp71atXx9ChQ608CiL7ZbzeoVFERAQqVqyIAwcOoF27dti9ezfOnTuHQ4cOqcdWfP311yhXrhyioqLQqVMnW5RNROTw7C60PfHEE7h48SJiY2OxZ88e3Lx5E97e3mjUqBGefvppvPDCC+oZHklJSeqZn6tWrcrz77Vv356hjagAqampAHJuIQfknFGtKApcXFzUZVxdXaHT6bBr1y6GNiIiG7G70Na8eXM0b968UMsGBwdDQye/Etkdg8GA0aNHo23btuqdRlq1agUPDw+888476gWux40bh+zsbFy6dMnGFRMROS67O6aNiKwnLCwMx44dM5mp9vPzww8//IANGzagbNmy8Pb2xvXr19GsWTPodHzLICKyFbubaSMi6xg5ciQiIyMRExODKlWqmDwWGhqK06dPIzk5GXq9Hj4+PvD39+eldIiIbIihjcjBiAhef/11rF27Ftu3b0eNGjXyXbZChQoAgKioKPzzzz/o1auXtcokIqL7MLQROZiwsDCsXLkSP/30Ezw9PZGUlAQA8Pb2hpubGwBg2bJlqF+/Pvz8/LBnzx688cYbCA8PR926dW1ZOhGRQ2NoI3IwCxcuBJBzIs+9li1bpp5pfeLECYwfPx4pKSmoXr063n33XfVSO0REZBsMbUQOpjBnXM+YMQMzZsywQjVERFRYPBWMiIiISAMY2oiIiIg0gKGNiIiISAMY2oiIiIg0gKGNiIiISAMY2oiIiIg0gKGNiIiISAMY2oiIiIg0gKGNiIiISAMY2oiIiIg0gKGNiIiISAMY2oiIiIg0gKGNiIiISAMY2oiIiIg0gKGNiIiISAP0ti6AiKzr5bnm/f6S0ZaogoiIioozbUREREQawNBGREREpAEMbUREREQawNBGREREpAEMbUREREQawNBGREREpAEMbUREREQawNBGREREpAEMbUREREQawNBGREREpAEMbUREREQawNBGREREpAEMbUREREQawNBGREREpAEMbUREREQawNBGREREpAEMbUREREQawNBGREREpAEMbUREREQawNBGREREpAEMbUREREQawNBGREREpAEMbUREREQawNBGREREpAEMbUREREQawNBGDmf69Ol47LHH4OnpiYoVK6JPnz44ceJEnsuKCLp16wZFUbBu3TrrFkpERHQPhjZyODt27EBYWBji4uKwdetWZGZmIjQ0FLdu3cq17Ny5c6Eoig2qJCIiMqW3dQFE1rZ582aTnyMiIlCxYkUcOHAA7dq1U9vj4+Mxa9Ys7N+/HwEBAdYuk4iIyARn2sjhpaamAgDKly+vtt2+fRuDBg3CggUL4O/vb6vSiIiIVAxt5NAMBgNGjx6Ntm3b4pFHHlHbw8PD0aZNG/Tu3duG1REREf2Lu0fJoYWFheHYsWPYtWuX2rZ+/XpERUXh0KFDNqyMiIjIFGfayGGNHDkSkZGRiI6ORpUqVdT2qKgonD59Gj4+PtDr9dDrc77b9OvXD8HBwTaq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ixdDURT06dPHBiMgIrJPxtvnRUdH53n7vBs3bqBr167w9PTE2rVrLRK47Imjj5+0yy5n2oyBbfny5Xjqqafwf//3f3km086dO6NChQq52i9duoSNGzeiXr16aNu2LZo2bWqNsomI7Fphbp+XlpaGLl26wMXFBevXr4erq6sNKi0Zjj5+0j67C23GXaLLly/HgAEDsGLFijwDG5BzK6i8bN++HRs3bkT79u0feEwbEZGjCAsLw8qVK/HTTz+pt88DAG9vb7i5uSEtLQ2hoaG4ffs2VqxYgbS0NPWMej8/v3zfi7XC0cdP2md3oW3KlCn4+uuvUbZsWTz00EP48MMPcy3Tp08fXkCXiKiIFi5cCAAIDg42aV+2bBmGDh2KgwcPqvd4rl27tskyZ8+eRfXq1a1RZolx9PGT9tldaDt37hwA4ObNm5g6dWqey1SvXp2hjYioiB50sYDg4OAHLqNljj5+0j67C20RERGIiIgw629wwyMiIqLSxm7PHiUiIiKif9ndTJujeHmueb+/ZLQlqiAiIiKt4EwbERERkQYwtBERERFpAEMbERERkQYwtBERERFpAEMbERERkQYwtBERERFpAEMbERERkQYwtBERERFpAEMbERERkQbwjghERA7C0e/E4ujjJ+3jTBsRERGRBhQ7tMXExCAhIaHAZRITExETE1PcLoiIiIjof4od2kJCQhAREVHgMsuXL0dISEhxuyAiIiKi/yl2aBORBy5jMBigKEpxuyAiIiKi/ynRY9pOnjwJb2/vkuyCiIiIyCEU6ezRF154weTndevW4dy5c7mWy87OVo9n69atm1kFEhEREVERQ9u9x7ApioL4+HjEx8fnuayiKHjssccwZ84cc+ojIiIiIhRx9+jZs2dx9uxZnDlzBiKC0aNHq233/ktISEBaWhri4uJQu3btkqqdiIhIM2JiYtCzZ08EBgZCURSsW7fO5PHLly9j6NChCAwMhLu7O7p27YqTJ0/apliyS0WaaatWrZr6/8uWLUPTpk1N2oiIiChvt27dQuPGjfHCCy+gb9++Jo+JCPr06QNnZ2f89NNP8PLywuzZs9GpUyf88ccf8PDwsFHVZE+KfUeEIUOGWLIOIiKiUq1bt275Hud98uRJxMXF4dixY3j44YcBAAsXLoS/vz++/fZbvPTSS9YsleyU2bex2rdvH3777Tdcv34d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",
"text/plain": [
"<Figure size 700x500 with 1 Axes>"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"print(numbers)\n",
"plot_histogram(results)"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"## Method 1: Random Numbers from Quantum Superposition"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 663.998x451.5 with 1 Axes>"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Setup a quantum circuit (4 bit random number 0-15).\n",
"qc = QuantumCircuit(4)\n",
"\n",
"# Select the simulator.\n",
"simulator = Aer.get_backend('aer_simulator')\n",
"\n",
"# Place all qubits into superposition (50% chance 0 or 1).\n",
"qc.h(range(4))\n",
"\n",
"# Measure each qubit.\n",
"qc.measure_all()\n",
"\n",
"qc.draw(output='mpl')"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"numbers = []\n",
"results = {}\n",
"\n",
"for i in range(300):\n",
" # Execute the circuit.\n",
" job = execute(qc, simulator)\n",
" result = job.result()\n",
" counts = result.get_counts()\n",
"\n",
" # Find the most frequent hit count.\n",
" key = max(counts, key=counts.get)\n",
"\n",
" # Since the quantum computer returns a binary string (one bit for each qubit), we need to convert it to an integer.\n",
" num = int(key, 2)\n",
"\n",
" numbers.append(num)\n",
" \n",
" # Count occurrences of each value for plotting a histogram of the random values.\n",
" results[num] = results[num] + 1 if num in results else 1"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"## Results?"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[13, 2, 12, 8, 15, 10, 3, 2, 8, 6, 13, 8, 14, 13, 5, 13, 9, 6, 10, 3, 14, 7, 1, 14, 10, 14, 5, 1, 12, 12, 7, 12, 14, 9, 7, 7, 12, 0, 9, 9, 5, 8, 15, 10, 3, 13, 4, 14, 9, 9, 15, 12, 5, 7, 9, 13, 14, 7, 2, 8, 7, 9, 15, 14, 12, 15, 8, 6, 0, 1, 12, 2, 3, 6, 13, 8, 12, 10, 7, 3, 11, 2, 8, 0, 6, 4, 6, 4, 3, 0, 4, 13, 7, 12, 12, 5, 11, 13, 9, 7, 6, 15, 6, 8, 8, 3, 2, 8, 11, 14, 14, 13, 9, 14, 14, 7, 8, 15, 2, 4, 2, 13, 1, 6, 1, 11, 5, 12, 15, 8, 11, 7, 7, 5, 9, 9, 4, 1, 7, 11, 1, 8, 8, 8, 1, 9, 2, 6, 8, 10, 1, 5, 12, 3, 0, 3, 4, 5, 6, 1, 1, 8, 3, 9, 3, 14, 1, 6, 8, 0, 6, 0, 15, 8, 6, 6, 2, 7, 2, 15, 4, 4, 8, 9, 3, 0, 7, 1, 12, 10, 15, 6, 6, 2, 13, 11, 13, 10, 10, 4, 4, 13, 9, 12, 5, 3, 7, 3, 15, 1, 4, 2, 9, 1, 4, 2, 6, 10, 6, 12, 1, 9, 13, 6, 1, 8, 2, 5, 7, 15, 0, 2, 5, 4, 4, 10, 13, 11, 5, 11, 14, 4, 0, 0, 7, 11, 11, 8, 6, 14, 10, 4, 13, 3, 10, 7, 2, 1, 10, 7, 5, 14, 11, 13, 2, 14, 1, 2, 11, 8, 3, 9, 9, 15, 13, 5, 13, 6, 3, 7, 12, 13, 14, 13, 13, 11, 5, 6, 9, 15, 8, 15, 6, 4, 10, 6, 8, 2, 12, 10]\n"
]
},
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 700x500 with 1 Axes>"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"print(numbers)\n",
"plot_histogram(results)"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"## Method 2: Random Numbers from Quantum Noise"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"from qiskit.providers.aer.noise import NoiseModel, pauli_error\n",
"\n",
"# Initialize bit-flip error rates.\n",
"reset_value = 0.03\n",
"measure_value = 0.1\n",
"gate_value = 0.05\n",
"\n",
"# Initialize QuantumError on the X and I gates.\n",
"reset_error_rate = pauli_error([('X', reset_value), ('I', 1 - reset_value)])\n",
"measure_error_rate = pauli_error([('X',measure_value), ('I', 1 - measure_value)])\n",
"gate1_error_rate = pauli_error([('X',gate_value), ('I', 1 - gate_value)])\n",
"gate2_error_rate = gate1_error_rate.tensor(gate1_error_rate)\n",
"\n",
"# Add errors to a noise model.\n",
"noise_model = NoiseModel()\n",
"noise_model.add_all_qubit_quantum_error(reset_error_rate, \"reset\")\n",
"noise_model.add_all_qubit_quantum_error(measure_error_rate, \"measure\")\n",
"noise_model.add_all_qubit_quantum_error(gate1_error_rate, [\"u1\", \"u2\", \"u3\"])\n",
"noise_model.add_all_qubit_quantum_error(gate2_error_rate, [\"cx\"])"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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r7zyitllAkCt2e2OoFduc61dRIgUFer40xWnzzjusfQl6/dK+4+53s7oa7Bwo1RU6vr5PKWgWPrPJtfbGb3+3VnS5oOunw8AvO3yyy/X7t27tWjRovMGyl/q3bu35s2bp4MHD+r666+vfP7sQClJX331ld599123110X9FR62JYtWzR8+HBlZ2crLCxMHTt21OHDhzVnzhzt3btXJ0445s3v1q2buYWazNIQPnoGLiCHjksH3TgpS218t08a2U0KDfLueZ2x26WvfvTuOQuKpU0HpP4p3j1vdb7b5+hB9Kavdks9krx7TgCoLavVqtmzZ2vq1KlVnk9NTdWCBQu0YcMGff/99zp69KjsdrsaN26sbt26qUePHrruuuvUvXt3SVKzZs30r3/9Sx999JFee+01LVy4sEqgHDFihAoKPHAjex3QU+lBOTk5GjVqlLKzs/Xggw8qKytLmzdvVnZ2tmbPnq2lS5dqw4YNslgs6tKli9nlekRwoOOj6OJS59MXFpUUVNkPQP2wdo/3z1la7ggyvmDvUSn7lPfPu26Pb8yGa7M7avG2g8el9OPePy8A1CQiIkKffvpplUC5bt06DR06VO3atdOjjz6qxYsXKz09XcXFxSopKdGRI0f06aef6qmnnlKPHj106aWXavHixZXtx44de04PpS8GSolQ6VFTp05VRkaGpkyZoueff17h4eGV22bOnKmuXbuqrKxMSUlJioiIMLFSz4mNvkiSdOjoLqfbK56v2A+A7ysrd9zfZ4aNPhIqzVrm4nCu48tsB45JOR6cnOd8NjSAJUbCwsLUv39/hYU1kJmHgAtcaGioli5dqssvv1ySVFhYqAceeECXX365Vq5cKXstPw389ttvNWbMGN10003Kzc2V5Lg3U5K++eYbnw2UEqHSY3bt2qUFCxYoJiZGTz/9tNN9evToIUnq2rVr5XNr1qzR4MGDFRcXp+DgYCUkJOjGG2/Url3OQ5mvS4nvrqZRifpiy4fKOVV1isjSshL9d90rslgs6ttxtEkVAnDV4VypzMV7Kd157hIvD7l05qCJvWWHfKCnzswafOH66yopKUlvvfWWkpKSzC4FgBu8/vrrGjBggCTHSMXLLrtML7/8smw2Y/9Z/vjjufdX2O12nTlzpk51ehKh0kPmz58vm82mm2++WY0aNXK6T0iIY8jn2aHy5MmT6ty5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",
"text/plain": [
"<Figure size 1165.66x451.5 with 1 Axes>"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from qiskit.providers.aer import QasmSimulator\n",
"\n",
"# Setup a quantum circuit (4 bit random number 0-15).\n",
"qc = QuantumCircuit(4)\n",
"simulator = QasmSimulator()\n",
"\n",
"# Setup quantum circuit for noise generation to build a random value.\n",
"qc.u(0,0,0,0)\n",
"qc.u(0,0,0,1)\n",
"qc.u(0,0,0,2)\n",
"qc.u(0,0,0,3)\n",
"qc.cx(0,1)\n",
"qc.cx(1,2)\n",
"qc.cx(0,2)\n",
"qc.cx(0,3)\n",
"qc.cx(1,3)\n",
"qc.cx(2,3)\n",
"\n",
"qc.measure_all()\n",
"\n",
"qc.draw(output='mpl')"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
"# Setup a quantum circuit.\n",
"qc = QuantumCircuit(4)\n",
"simulator = QasmSimulator()\n",
"\n",
"# Setup quantum circuit for noise generation to build a random value with greater iteration.\n",
"for i in range(50):\n",
" qc.u(0,0,0,0)\n",
" qc.u(0,0,0,1)\n",
" qc.u(0,0,0,2)\n",
" qc.u(0,0,0,3)\n",
" qc.cx(0,1)\n",
" qc.cx(1,2)\n",
" qc.cx(0,2)\n",
" qc.cx(0,3)\n",
" qc.cx(1,3)\n",
" qc.cx(2,3)\n",
" qc.barrier()\n",
"\n",
"qc.measure_all()"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"4\n"
]
}
],
"source": [
"# Execute the circuit.\n",
"job = execute(qc, simulator, basis_gates=noise_model.basis_gates, noise_model=noise_model, shots=1)\n",
"result = job.result()\n",
"counts = result.get_counts(0)\n",
"\n",
"num=list(counts.keys())[0]\n",
"num = int(num, 2)\n",
"\n",
"print(num)"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [],
"source": [
"numbers = []\n",
"results = {}\n",
"\n",
"for i in range(300):\n",
" # Execute the circuit.\n",
" job = execute(qc, simulator, basis_gates=noise_model.basis_gates, noise_model=noise_model, shots=1)\n",
" result_bit_flip = job.result()\n",
" counts_bit_flip = result_bit_flip.get_counts(0)\n",
"\n",
" num=list(counts_bit_flip.keys())[0]\n",
" num = int(num, 2)\n",
"\n",
" numbers.append(num)\n",
"\n",
" # Count occurrences of each value for plotting a histogram of the random values.\n",
" results[num] = results[num] + 1 if num in results else 1"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"## Results?"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[5, 13, 13, 14, 8, 7, 11, 0, 4, 10, 10, 4, 5, 4, 9, 7, 5, 5, 13, 15, 10, 1, 9, 15, 11, 13, 4, 7, 0, 14, 12, 5, 3, 9, 6, 1, 11, 9, 13, 13, 12, 4, 8, 10, 4, 6, 12, 8, 4, 12, 11, 10, 6, 12, 4, 8, 7, 9, 13, 5, 6, 8, 7, 13, 9, 15, 4, 5, 7, 10, 13, 11, 10, 11, 7, 8, 8, 9, 15, 0, 2, 11, 11, 4, 4, 3, 8, 15, 3, 5, 8, 7, 10, 6, 5, 1, 3, 12, 6, 7, 13, 7, 10, 9, 8, 7, 11, 1, 8, 14, 8, 14, 0, 4, 15, 10, 1, 12, 12, 9, 14, 12, 3, 0, 6, 10, 9, 1, 9, 0, 9, 8, 12, 6, 14, 14, 1, 1, 15, 9, 1, 7, 0, 1, 11, 10, 8, 3, 4, 10, 13, 11, 4, 3, 10, 2, 5, 15, 9, 1, 7, 7, 5, 7, 6, 15, 14, 12, 8, 4, 15, 10, 12, 9, 4, 12, 12, 14, 3, 13, 0, 10, 7, 14, 4, 9, 5, 14, 8, 1, 6, 6, 4, 5, 14, 15, 13, 6, 1, 11, 1, 14, 4, 11, 10, 7, 2, 2, 5, 9, 3, 13, 8, 12, 6, 6, 0, 14, 4, 4, 7, 0, 11, 13, 14, 8, 3, 5, 3, 15, 7, 0, 6, 14, 12, 4, 8, 7, 6, 12, 1, 7, 7, 1, 3, 9, 11, 11, 7, 9, 15, 5, 4, 9, 11, 14, 11, 4, 12, 1, 13, 5, 9, 11, 7, 15, 4, 9, 7, 8, 4, 4, 3, 7, 15, 1, 2, 11, 5, 4, 8, 4, 14, 15, 7, 15, 13, 0, 3, 2, 8, 4, 1, 6, 7, 15, 9, 11, 13, 8]\n"
]
},
{
"data": {
"image/png": "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Z4ZmyAhspUuX1vz583Mc2AAAAPKrfBfafvrpJx07dixT+7Fjx3zXXjv95ILZs2ere/fuKlWqlObPn6+aNWvmWV8BAADySr47e/SDDz7Qiy++qGuvvVZVq1ZVZGSkduzYodmzZ2vfvn36y1/+osGDB0s6dXufm266SSkpKYqPj9e7776b6e9VrVpVffv2zeNRAAAABFe+C2033HCDdu7cqSVLlmjp0qU6cuSI72DtW265RXfffbfvDI+kpCTfmZ/vvfdeln+vVatWhDYAAOB6rjoRIS9wIgIAAMhLF+WJCAAAAAUVoQ0AAMAFCG0AAAAuQGgDAABwAUIbAACACxDaAAAAXIDQBgAA4AKENgAAABcgtAEAALgAoQ1AgTJ69Ghdc801ioiIULly5dS1a1dt2LDBb5mkpCT17t1b5cuXV4kSJXTVVVfp448/DlGPAeAUQhuAAmXhwoXq37+/li1bprlz5yotLU3t2rXT0aNHfcvceeed2rBhg2bMmKEffvhB3bp1U69evfT999+HsOcACjruPXoG7j0KFCx79uxRuXLltHDhQrVs2VKSVLJkSU2YMEG9e/f2LRcTE6Nnn31W99xzT6i6CuAixb1HAeA8JCcnS5JKly7ta2vevLnef/997d+/X16vV++9955OnDih+Pj4EPUSAKTwUHcAAELF6/Vq0KBBatGiha688kpf+wcffKCbb75ZMTExCg8PV/HixTV9+nTVqFEjhL0FUNAR2oA8du/YwH5/8qBg9AKS1L9/f61bt06LFy/2ax8+fLgOHjyor776SmXKlNGnn36qXr16adGiRapbt26IegugoCO0ASiQBgwYoJkzZyoxMVGVKlXytf/6668aP3681q1bpyuuuEKSVL9+fS1atEivvvqqJk6cGKouAyjgCG0AChQz04MPPqjp06drwYIFqlatmt/jx44dkyR5PP6H/IaFhcnr9eZZPwHgTIQ2AAVK//799c477+izzz5TRESEkpKSJElRUVEqVqyYateurRo1aui+++7T888/r5iYGH366aeaO3euZs6cGeLeAyjIOHsUQIEyYcIEJScnKz4+XhUqVPD9e//99yVJhQoV0qxZs1S2bFndeOONqlevnqZNm6a33npLHTt2DHHvARRkzLQBKFDO59KUNWvW5A4IAPIdZtoAAABcgNAGAADgAoQ2AAAAFyC0AQAA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w8O1detWPfzwwxwfCQAImRzPtA0fPlwzZ87UqFGjNGnSJDVu3FiXXHKJdu/ere+++0579uxR9erVNXz48GD2F8h1vXv3znT/2/bt26t379666667QtQrAEBBl+PQFhMTo2XLlunRRx/Ve++953e15KJFi+quu+7Ss88+q9KlSwelo0AwHTlyxHd9QenULdFWr16t0qVLKy4uTjExMX7LFypUSOXLl1etWrXyuqsAAEgK8OK6ZcqU0ZtvvqlJkyZp/fr1vjsi1K5dO1cuLggEy4oVK5SQkOD7eciQIZKkPn36ZNr9DgBAfnDBoe3pp5/W0aNHNWLECF8wK1SokOrWretbJjU1VX//+98VERGhxx9/PHi9BYIkPj5eF3IHt99++y33OgMAwHm4oBMRvvrqK/3f//2fYmJizjqTVrhwYcXExOjvf/97rl+nDQAAoCC4oNCWcc2zAQMGnHPZ/v37q3Tp0poyZUqOOwcAAIBTLii0LVmyRNddd12WN1g/U5EiRXTdddf5XVsNAAAAOXNBoW3nzp2qXr36eS9frVo17dq164I7BQAAAH8XFNo8Ho/S0tLOe/m0tDR5PDm+fi8AAAD+vwtKVLGxsVq3bt15L79u3TpVrFjxgjsFAAAAfxcU2v7yl79o3rx553X5g99++03z5s1Ty5Ytc9o3AAAA/H8XFNr69++vtLQ09ejRQ3v37s12uX379qlnz55KT0/XAw88EHAnAQAACroLurjuVVddpUGDBmns2LG6/PLLdf/99yshIUGVKlWSJO3YsUNff/21Xn/9de3Zs0dDhgzRVVddlSsdBwAAKEgu+I4IL7zwgooWLaoxY8bo6aef1tNPP+33uJkpLCxMTzzxhP71r38FraMAAAAF2QWHNsdxNGrUKP31r3/VlClTtGTJEiUlJUmSypcvrxYtWqhv37669NJLg95ZIBjuHRvY708eFIxeAABwYXJ8w/hLL72UmTQAAIA8wkXUAAAAXIDQBgAA4AKEthBJTEzUjTfeqNjYWDmOo08//dT3WFpamh577DHVrVtXJUqUUGxsrO68807t3LkzdB0GAAAhRWgLkaNHj6p+/fp69dVXMz127NgxrVq1SsOHD9eqVav0ySefaMOGDercuXMIegoAAPKDHJ+IgMB06NBBHTp0yPKxqKgozZ07169t/Pjxaty4sbZt26a4uLi86CIA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wVqxYkWe1J84caKee+45dejQQe3atdPo0aO1atUqHTlyxG+5cePG6fvvvw/6h2pKSoq++uqrkM32ffrpp+rbt6+mTp2q8PBwX7vjODp48GCu13/77be1b98+Pffcc+rbt682b94sKe9mP7dt26bBgwfrqquu0t13360ePXrov//9b57U9nq9WrJkifr16+d734mPj9fAgQOVmJiYJ304U0ZgLaizz/lhj8vJkyfzvL7X62W2NycMITFmzBiLjIw0x3GsRo0aVrt2bXMcx/evTp069tJLL9muXbvypD9erzdP6mR4//337ZJLLvEbc3R0tL399tt5Un/06NEWHR1t0dHRds0111hYWJhdfvnltmPHDjMz27Fjh82ePdu2bdsW9Nr/+Mc/zHEca9u2rdWqVcscx7HixYtbhw4dbMKECZaUlGTffPONOY5jI0aMCHr9V155xapUqWLLli0L+t8+H02bNrUWLVrY6tWrfW0//PCDjRo1ytq0aWN16tSx+++/3xYsWJAr9evWrWs1atSwihUrmuM4dsstt9jevXtzpVZW7r33XitatKhdf/319sQTT1jFihWtfv36tn37dvvtt9/szTfftBEjRtjy5cuDXvuVV16x6OhocxzHKleubFWrVvV7DdaoUcNeeeUV27Nnj5nl/fsC8taJEydC3QUzMzt58mSW7bm1/R05cuSsj+fn7Z7QFgKbN2+2EiVK2F/+8hfbvHmz/f7775aWlmbbt2+3V1991RISEnxvom3atLGVK1cGvQ/Hjh2z9evX27Fjx4L+t89l69atVrFiRatYsaJ9/PHHNnPmTHv88cd9Hxrr1683M/8X8smTJ7N9YV+o3377zcqWLWvNmze3PXv22JYtW2zkyJHmOI59/vnnNmDAAIuJiTHHceySSy6xYcOG2YEDB4JS28xs7dq1Vrt2bYuPj7eFCxfac889Z23btvV9mJYvX95q165tJUqUsGnTpplZ9m9qOVGnTh1LSEiw33//3a99zZo19sEHH9iYMWPsgw8+yJUvDJs3b7awsDD75z//6Wvbvn27NWjQwBzHsRIlSviFiC5duthvv/0WtPobN240x3Hs5Zdftp07d9ott9xijuNYgwYN7KuvvjKzU2/YufWm/euvv1qxYsWsb9++vg/MxYsXW6lSpWzYsGHWsGFDv/G3aNEiaK//LVu2WGRkpF111VW2fv1627Rpk33//ff27LPPWmRkpBUuXNhX96677rKDBw8Gpe7ZzJ4928aMGWN33HGHDR482N5991377rvvbPfu3Zaenm5mufsBmlEjVBYvXmz//e9/bdy4cTZ79mw7fPiwmQX39Z6dcePG2c0332wdO3a0N954I9NnQW4+76+88op9/PHHtnv37kw182KdNGnSxP71r3/Z8ePHs10mN98HAkFoC4Hhw4dbuXLlfB8SZplfIGvXrrU777zTihYtarVq1bIVK1YEtQ+jR4+2Ro0a2ahRo2zevHm2Y8eOc75Y9uzZY2lpaQHXfuKJJyw6Otref/99v/b33nvPHMexW2+91deW8bysXLnSJk2alOlFnhPDhg2z8uXL2+eff+5r2717txUrVsyaNGliFStWtMcff9z69OljUVFRVrx4cXvttdfMLHhvpjNnzrSIiAibMGGCmZnt2rXLZs6caUOHDrUmTZqYx+Mxx3Hs0ksvtccff9xmzZplKSkpAdfNCC3PPfecX/uQIUN8M78Z/5o0aWLTp08PuObppk6dapGRkb51v3fvXrv//vstPDzcnnzySdu1a5dt2LDBxo0bZ3Xq1DHHceyJJ54ws+B8iAwdOtRiYmJ8s3g//PCDde7c2RzHsaZNm9r3338fcI2z+ec//2mxsbF+r/19+/ZZlSpVrFKlSta+fXubNWuWjR071q655hpzHMd69eoVlC9Xw4YNs5iYGL/t3uzUrMPgwYPtqquustmzZ1unTp3McRzr3r37WT/UAnHgwAF79NFHzXEcCw8P99vuYmJirHPnzjZlypSgflk63ZmvY6/Xe16v7WB9iB89etQmTpzo95qLjY21MWPGBOXvn82BAwds4MCB5jiORUVFmeM4VrRoUfvkk098y5w5ExXMEPnrr7+a4zhWs2ZN69Chgz3zzDO2ePFiX2DN8Mknn9j8+fODHmA3bdpkjuPYk08+memxHTt22Lx582z79u1BrRlMhLYQ6Natm1WvXt22bt1qZuYLQll9yxg7dqw5jmN9+/YNah8ydg2Fh4dbTEyM3XjjjTZu3Dhbvnx5lruKjhw5Yo888ojdddddAb+I6tevb127dvUFsNTUVEtPT7f09HTr3LmzRUZG2uLFi33Lnzhxwvr3728ejyco0/lXXnml3XDDDfbHH3/42ubPn2/FihWz1q1b29q1a33tS5YsscjISLv00kuD9uaR8XeGDx9uZcuWtaVLl/o9/u9//9scx7HGjRvb5Zdfbo7jmMfjCUpoywgt8+fPN7NTM64TJkwwx3Gsbt26NnToUBs/frz16NHDihcvbpUqVfItG4wPrE8//dTCw8Nt3rx5Zma2bNkyq1Chgg0YMCDTsocOHbLmzZtbkSJFfLvrAlW+fHnr2bNnpm38n//8p2+mb9KkSZaammpmwZ9t6Ny5s9WpU8dvlvObb76xMmXKWM+ePf0+uFJTU+3GG280x3F8s8+BiI+Pt7p16/pmUNPT033b4owZMywqKsqWLVtm27dvt+7du5vjOPbZZ58FXDcrzz33nBUvXtxuuukmmz9/vm3YsMHee+89GzFihN1www1WtmxZcxzHrrrqqqB/cTAze+2116xXr142c+bMTGEhmLP62Zk8ebIVL17c6tSpY0OHDrUxY8ZY/fr1zXEcGzlyZK7Wfvnlly0qKsp69+5tmzdvtgULFlj16tXtqquusoMHD9pDDz1k5cqVs4YNG9rTTz9tR48eDWr91157zRzHsapVq/pCY1xcnN188802YcIE++GHH8zMLDY21vr06WOHDh0ys+C9Fh999FErU6aMJSYm+tr27Nlj//jHP6xSpUq+EN20aVN7++2382TW80IQ2kIg4wPixx9/zHaZ0zfQ7t27W1xcnP36669Bqb9hwwYrWbKkNW/e3MaPH29dunSxcuXKmeM4VqVKFevTp4/95z//sXXr1vm+6S5btsyioqKsS5cuAdX+9ddfrWrVqnbfffdl+fjXX39tRYsWtbvvvtvX9vPPP1u9evXs+uuvD6i22amxV6tWzR555BG/9vHjx5vH4/EFFDPzzTL07t3bKlWq5BfmgiEpKclatmxpNWvWtKSkJF97165drXz58rZ48WLbvHmzPffcc/b8888HpWb58uWtd+/etn//fjMzW7RokVWvXt3atGljGzZs8C2XlpZmL730km/GJVh+/vlnK1GihA0ePNjMTn3rDQ8P972BZsx4ZDz3o0ePtuLFiwclPCxatMgcx7HXX3/d15bxJWnPnj02bNgwCwsLswoVKvh2SwdTamqqPfDAAxYZGek3czZ8+HBzHMcWLVrk61PG4y+99JKFh4fbf//734BqHz582Lp162axsbFZzqhPmTLFSpQoYXPnzjWzU7tSY2NjrWfPnmYW/PBapUoV69SpU5ZfEHfs2GEzZ860fv36+WbhJk+eHNT6GcfyFS1a1Jo0aWLDhw+3pUuXZhpnxhfqo0eP2ksvveT7shGomjVrWsOGDW3Lli1mduqL6bx586x69epWpkyZTCE9LS3N5s+fH5T3oEsvvdSuu+4627lzp69twIABFhkZae3bt7cSJUpY/fr1rUKFCr5d9GcG20AcO3bMmjVrZm3btrV58+bZqFGjrFGjRhYeHm4ej8fq1atnHTt2NMdxMr1PB0OFChWse/fuvkmD5ORku+OOO8xxHKtVq5b16tXL7zCFxx9/POh9CAShLQQWL17sO47m66+/znIG5fRZt2HDhlnx4sVtzZo1Qan/+eefW3h4uD311FNmduoYry+//NKeeuopa9mypZUsWdLCw8OtXr16NmjQIPviiy9s6NCh5jiOzZw5M6Daq1evtlKlStmQIUPMLOtjSm644QaLjo62n376yczM3nrrLXMcx2bMmBFQbTOzOXPmmOM4NmrUKF/bwYMHrVOnTla4cOEsf+eee+6x0qVL27p16wKuf6Y1a9ZYZGSk3XbbbZaSkmJHjx41j8djPXv29JtVDMa3vWXLlpnjOH6zWtOmTTPHcfyOm8r44PJ6vdasWTOrXbt2UHZLe71eO3HihN1xxx3m8Xhs0qRJlpiYaCVLlrQXX3zRt9zpMx0vvviihYWF+QJNIG677TYrU6aMb6xZBZH333/f9wXmkUceCdqHVUatjFnN66+/3t5880175plnfCfhZHUM4ZgxY8zj8fjNCuS09ogRI3wfQqfPnhw7dsyuv/56i4iI8HtOWrVq5TvuM5h+/vlnK1mypA0bNszXltXsVkpKiv3vf/+z6tWrW+nSpW3JkiVBqb9u3TpzHMcaNWpkbdu29X04lyxZ0tq3b28vv/yy/fzzz36/kxH4W7RoEXD95cuXW3h4uL3yyiuZHps+fbo5jmOPPfaYmf0ZGn/++Wdr1KhRwHtcMmq/9NJLfu0Zu6r79+/v2zX47bffWocOHcxxHPvPf/4TUN0zzZ0712JiYnwnWv3xxx82Z84cGzhwoG/vQlhYmNWtW9dGjhxpn3zyiSUnJwdcN+MEr0mTJvna3njjDStUqJANHDjQF6JTUlJs9uzZdumll1rJkiX9vsyHGqEtBNLT0+3hhx/2nSU6fvx4v5mW0+3fv9/uvPNOK1u2bNDqf/jhh+Y4TqZjylJTU23jxo320Ucf2UMPPWT169e3woULW4kSJax48eJWqlSpgGsnJSVZQkJCpjcNsz8D3BdffGGO4/hmY3r37m0REREB1zY79Y35hRdesF9++cXM/gxD27dvt4ULF5qZ+R23d+DAAevZs6dVrlw5KPVPl/EB+fbbb1uxYsXs888/t/fff9/vTSUtLS1osxwZJ3s4jmOXXXaZPfjgg3bDDTdYtWrV/Ppj9ufz0r17dytfvrxt3LgxKH0wOxXcM3bP33///XbVVVdZo0aNfG+YGfbu3WudO3e2mJiYoNR94403sjzg2uzUeL1er6WmptoHH3xgVatWtaJFi9pDDz1k+/btC0p9s1MzzacHBcdx7L777rPrrrvO3n33Xb9l9+zZY7fddltQXndmp46TrVevnoWFhVm3bt1sypQp9txzz1mbNm38goLZqS8y7du3twYNGgSl9ul++uknq1Spkt18881mdmobPz2wnXkA+KeffmqO49izzz4blPrvvvuuOY7j+6KwYcMGe/bZZ30nwziOYxUqVLBbb73Vpk2bZvv377cXXnghKF9azU7tGq5QoYJ9+eWXZvbntmd2KkDfdNNNVrhwYb/DN95++21zHMc+/fTTgGqPHDnSKlWqZF9//bWvLSkpyTp16mQVK1a0o0eP+j33a9assfDwcN9xpcH0f//3f+Y4jn388cdm9ufzsH79evN4PFalShXfFyjHcYJyXHfv3r2tbNmyvhC2Y8cO69Chg9WoUcN3HN/pEwnjx483x3F8xzTnB4S2EJo4caJdeuml5jiOVaxY0QYMGGD/+9//bO3atfbjjz/ajh077PHHH7eiRYv6ZqaCwev12k8//WSbN2/2/XymI0eO2KpVq+zdd9+1du3ameM49uCDDwalflJSUrbT/BmBKSEhweLi4mzatGlWo0YNv92leSHjQ2TevHkWGxtr/fr1y5U6Xq/Xjh8/bn/9618tNjbWLrnkEqtXr55vVi+Yx1OkpKTYRx99ZLfeeqvv7NgzZ95Od+DAAevcubNVr149aH3IsGHDBuvYsaPfQehxcXH26KOP2owZM2zevHm+D6/hw4cHre75nkizcuVKu/rqq81xHBs9enTQ6pud+lD45JNPbMSIEfbuu+9aamqqtW3b1po3b24rVqzw7TJ84YUXLDw83B566KGg1V62bJm1atXK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otS8eXO1a9dOTZo0UfXq1TPN5hw9elRPPfWU9u3bpzfeeCPgmbZA6k+ePDng4JST+k8++aT2798f8PgDqR2qsYd63Qdz/MGW/2IkAOCi8csvvyg5OVnNmjXTbbfdprlz52rp0qWaOXOm4uLiFB8fr+uuu04NGzZUxYoVFR0drXXr1mny5MmKj48P+EM70PqBfmjntP4bb7wR8PgDrR2qsYd63Qdr/LmB0AYAyDW//PKLTpw4oXbt2ql///664YYbtGHDBi1dulTz5s3Txx9/rP/+97+6/PLL1bp1a11//fX6+uuvdejQId17773Ud2lt6ucOdo8CAHLNRx99pF69eum9995Tr169fO1paWnaunWr1qxZo0WLFmnBggX6+eefVahQIZmZihQpov3791PfpbWpn0vy5soiAICCKNT3Oi7I9Qvy2PND/dxAaAMAhESo73VckOsX5LHnh/o5xe5RAEBIZVyL7bffflOXLl104MABbdu2jfoXeW3qX7jATs0AACBAGWcJ7tixQ2lpafrb3/5G/QJQm/oXjpk2AEC+YGb6/fffVbp0aZUoUYL6BaQ29c8foQ0AAMAF2D0KAADgAoQ2AAAAFyC0AQAAuAChDQAAwAUIbQAAAC5AaAMAAHABQhsAAIALENoAAABcgNAGAADgAv8PQQZlDgeUkPUAAAAASUVORK5CYII=",
"text/plain": [
"<Figure size 700x500 with 1 Axes>"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"print(numbers)\n",
"plot_histogram(results)"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"## Creating a Game: Magic Number\n",
"\n",
"Let's make a number guessing the game!\n",
"\n",
"We will generate a random number from 0-15 using the quantum circuit.\n",
"The player will have to guess the magic number.\n",
"At each round, we'll let the player know if they guessed too high or too low.\n",
"\n",
"Have fun!"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [],
"source": [
"def random_number():\n",
" # Setup a quantum circuit.\n",
" qc = QuantumCircuit(4)\n",
" simulator = QasmSimulator()\n",
"\n",
" # Setup quantum circuit for noise generation to build a random value with greater iteration.\n",
" for i in range(50):\n",
" qc.u(0,0,0,0)\n",
" qc.u(0,0,0,1)\n",
" qc.u(0,0,0,2)\n",
" qc.u(0,0,0,3)\n",
" qc.cx(0,1)\n",
" qc.cx(1,2)\n",
" qc.cx(0,2)\n",
" qc.cx(0,3)\n",
" qc.cx(1,3)\n",
" qc.cx(2,3)\n",
" qc.barrier()\n",
"\n",
" qc.measure_all()\n",
"\n",
" # Execute the circuit.\n",
" job = execute(qc, simulator, basis_gates=noise_model.basis_gates, noise_model=noise_model, shots=1)\n",
" result = job.result()\n",
" counts = result_bit_flip.get_counts(0)\n",
"\n",
" num=list(counts.keys())[0]\n",
" return int(num, 2)"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Too high!\n",
"Too low!\n",
"Too low!\n",
"Great guess! You won in 4 guesses!\n"
]
}
],
"source": [
"# Generate a random quantum number.\n",
"magic_number = random_number()\n",
"\n",
"guess = -999\n",
"count = 0\n",
"while guess != magic_number and guess != -1:\n",
" count = count + 1\n",
" guess = int(input(\"Guess a number from 0 to 15? \"))\n",
" if guess < magic_number:\n",
" print(\"Too low!\")\n",
" elif guess > magic_number:\n",
" print(\"Too high!\")\n",
" else:\n",
" print(\"Great guess! You won in\", count, \"guesses!\")\n",
" break"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.9"
},
"orig_nbformat": 4,
"vscode": {
"interpreter": {
"hash": "4a274d3f95f6e68d0c54d70f692efcd966c363fdfb2e1b41a6b766fd9a40d047"
}
}
},
"nbformat": 4,
"nbformat_minor": 2
}
@primaryobjects
Copy link
Author

Random numbers from Python

classic

Random numbers from superpositon

superposition

Random numbers from quantum noise

noise-random

Generating a random number from superposition

hadamard

Generating a random number from quantum noise

noise

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment