クリーム色の背景、色付き表示、高コントラスト、大きな文字のほうが読みやすいですか?配色と文字を選ぶと、すべてのページに一度で反映されます。

無料レッスン

量子ビットの測定と確率

このレッスンのあとで: 状態を測ったときの結果と回数を、確率から予想できる。

55分のレッスンコマンド1件量子シミュレーターラボ:JupyterLab で量子ビット、ゲート、測定

測ると答えは0か1になる

量子ビットの測定は、状態を読み出して、0か1のどちらかの答えを得る操作です。答えは確率で決まるので、同じ状態でも結果は毎回変わります。

たくさん測って、結果の割合を見れば、確率が分かります。このレッスンでは、測る規則と、回数の読み方を学びます。

このレッスンのゴール

メモ

状態を測ったときの結果と回数を、確率から予想できる。

キーワード

ことばいみ
測定状態を読み出して、0か1の答えを得ること
ショット同じ状態を1回測ること
カウントショットごとの結果を、種類別に数えた回数
累積確率確率を、先頭から順に足していった数
乱数の種乱数の並びを決める数。同じ種なら同じ並び

学生が入力するセルは、このプレビューでは空白です。

測ると確率どおりに1つ出る

測ると、結果は0か1の1つだけです。0が出る確率は、0の振幅の大きさの2乗です。

[0.6, 0.8] なら、0は36%、1は64%です。このシミュレータは、状態を作り直しながら何度も測り、結果を数えます。

例: 予想される回数

状態ショット数0の目安1の目安
[0.707, 0.707]1055
[0.707, 0.707]1000500500
[0.6, 0.8]1000360640
[1, 0]50500

学生が入力するセルは、このプレビューでは空白です。

ラボは1000回測って数える

ラボの measure.py は、H ゲートを当てた状態を、1000回測ります。乱数の種を1にした場合と2にした場合を、表示します。

表示される言葉は英語です。1000 shots, seed 1 は、1000回測り、乱数の種が1という意味です。波かっこの中が、0と1の回数です。

1000回測って数える

コマンド
docker exec jupyter python3 steps/measure.py

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

測定は累積確率と乱数で決まる

シミュレータは、0以上1未満の乱数を1つ引きます。確率を順に足した累積確率と比べ、乱数が初めて下回った場所を答えにします。

[0.6, 0.8] の累積確率は、0.36 と 1 です。乱数が0.2なら0、0.5なら1になります。

決めた乱数で10回測る

コード: python
# 乱数の代わりに、決めた10個の数で10回測ります。
state = [0.6, 0.8]
chance_zero = abs(state[0]) ** 2
draws = [0.1, 0.9, 0.35, 0.37, 0.7, 0.05, 0.5, 0.2, 0.99, 0.6]
zeros = 0
for r in draws:
    if r < chance_zero:
        zeros = zeros + 1
print("0:", zeros, "1:", len(draws) - zeros)
# 0.9 を 0.1 に変えて、もう一度実行してください。
# 0の回数は、いくつになりますか。

よくある間違い

注意

確率が0.5なら、10回測れば必ず5回ずつ出ると考えがちです。確率は、出やすさを表すだけです。1000回測っても、507対493のように少しずれます。

乱数の種で結果をそろえる

乱数の並びは、乱数の種で決まります。同じ種なら、同じ並びになり、回数も同じです。ラボが毎回同じ数を表示するのは、このためです。

種を2に変えると、並びが変わります。回数は 503 対 497 に変わりますが、どちらも500に近い数です。

さらに挑戦: 回数を増やす

ノートブックで、measure(state, 10, 1)、100、10000 を試します。0の割合は、500に近づくでしょうか。

回数が増えるほど、割合はどうなるかを、表に書いてください。ラボは結果を保存しないので、書き写しておきます。

このラボとソースについて: 量子シミュレーターラボ:JupyterLab で量子ビット、ゲート、測定

授業で使いますか?このモジュールを学生に割り当てると、教員用ガイド、自動採点つきの課題、学生ごとのラボを使えます。