はじめに
pythonは初心者ですが、量子コンピュータ関連の処理を早くしたいので色々勉強しているので備忘録です。今回はランダムな整数を得るための処理を高速化。。。
numpy
numpyを使って、iterationの数だけランダムな自然数を0からNの間で取り出します。少しでも高速化したい。
早速ループで
今までは普通にループの処理で書いてました。
import time
#量子ビット数100みたいな処理
N = 100
#繰り返し計算1000回みたいな処理
iteration = 1000
start = time.time()
#1000回繰り返して0からNの自然数を取り出す処理
for i in range(iteration):
x = np.random.randint(0,N)
print(x)
print(time.time()-start)
結果として、
(略)
49
86
61
9
34
22
96
52
47
3
0.02075791358947754
0.02秒でした。
リストを作ってループ
ほとんど同じですが、リストを作ってからループを回します。
import time
N = 100
iteration = 1000
start = time.time()
#最初にリスト作って実行
x_list = np.random.randint(0, N, iteration)
for x in x_list:
print(x)
print(time.time()-start)
早くなりました。
(略)
97
45
0
53
0.011908769607543945
二倍くらいになりました。今後はこれを使うようにします。