おはようございます。4月から次男は一人で保育園に通ってます。しかし、登園前に長男と保育園からの同級生と一緒に小学校そばまで一緒に行ってから登園してます。@kjunichiです。
Interface(インターフェース) 2019年 03 月号
- 出版社/メーカー: CQ出版
- 発売日: 2019/01/25
- メディア: 雑誌
- この商品を含むブログを見る
背景
ハッカーニュースでPythonで書かれた150行の量子コンピューターのシミュレーター知った
表題日本語で訳してツイートしたら、思った以上にTLでの反響があった
Pythonで書かれた150行の量子コンピューターのシミュレーター。README下にRustで書かれたやつも紹介されてるなぁ / “GitHub - adamisntdead/QuSimPy: A Multi-Qubit Ide…” https://t.co/5TwuqsT2YM
— kjunichi (@kjunichi) 2018年4月10日
学んだこと
いきなり、手元の環境では以下のエラーが出力されて動かない
Traceback (most recent call last): File "examples.py", line 45, in <module> print('NOT Gate: |' + NOT.measure() + '>') File "/Users/junichi/work/python/QuSimPy/QuSim.py", line 147, in measure self.numQubits File "/Users/junichi/.pyenv/versions/3.6.1/lib/python3.6/site-packages/numpy/core/numeric.py", line 2039, in binary_repr binary = bin(num)[2:] TypeError: only integer scalar arrays can be converted to a scalar index
でも、WindowsのAnacondaでは動いた。
ちょっと調べたらNumpyのバージョンが古いと動く模様
使用しているnumpyのバージョンを調べるには
import numpy as np print(np.version.version)
ということを以下のURLで知った。
自力でエラーに対応した
numpy#binary_reprでとうもスカラ値を入れれば良さそうな事が 察知できたので、以下の様にnp.random.choiceで得られる配列の 先頭を取得するように修正した。
np.random.choice(results, 1,p=self.probabilities)[0],
さらに良い方法
ハッカーニュースで紹介されたからか、同様の事象がすぐにIssue挙げられて、
翌日みたら、以下のように
np.random.choice(results, p=self.probabilities),
random.choiceの第二引数の指定が消されていた、これで、 ランダムに1つだけ選択してスカラ値が取れる模様。
参考資料
もう一年くらい前かIBMがクラウドで量子コンピューターを一般公開していた 事を思い出し、ちょっとググったら、当時は英語だった気がするが、日本語のページを発見
TLで「量子コンピューター」で検索したら日銀の公式で論文紹介していたヤツ
記事書いて大分たつけど面白そうな記事を見つけたので備忘録も兼ねて
まとめ
当初は、動いたり、動かなかったりするのが量子コンピューターなのかも?そこも含めて シミュレーションしているのかなどとも考えたりした。
学べたこと
- numpyのバージョンの調べ方
- numpy#binary_reprの引数の指定方法
- numpy#random.choiceの結果をスカラ値で取得する方法
関連記事
- BlenderでPython使って最速降下曲線を描いてみる
- mruby-juliaでPythonもmrubyから呼び出せるようになった
- シェルスクリプトのかわりにPythonでマルチプラットフォームで動かそうとして学んだこと
- Windowsで64ビットなPythonでPython-Fuが動くgimpをビルドした
- PYTHONビルド時の--enable-frameworkと--enable-sharedの違い
- pyenvにはCONFIGURE_OPTSではなくPYTHON_CONFIGURE_OPTSだった件
- WindowsでソースからビルドしたGimpでPYTHONPATHを指定せずにPython Fuを使うには
- 15歳の天才少女が書いたPython3のコードを読んで学んだこと
- シェルスクリプトのかわりにPythonでマルチプラットフォームで動かそうとして学んだこと
10年前の記事
Interface(インターフェース) 2019年 03 月号
- 出版社/メーカー: CQ出版
- 発売日: 2019/01/25
- メディア: 雑誌
- この商品を含むブログを見る