次のコードで予期しない出力が発生しています。
import random
N = 30 # number of steps
n = random.random() # generate a random number
x = 0
y = 0
z = 0
count = 0
while count <= N:
if n < 1/3:
x = x + 1 # move east
n = random.random() # generate a new random number
if n >= 1/3 and n < 2/3:
y = y + 1 # move north
n = random.random() # generate a new random number
if n >= 2/3:
z = z + 1 # move up
n = random.random() # generate a new random number
print("(%d,%d,%d)" % (x,y,z))
count = count + 1
コードを実行すると、問題は次のとおりです。
- コード出力は、ステップ数(N)変数より 1 つ多く、31 座標を表示します。
- 1 ステップの各反復は 1 ステップしか実行できませんが、複数のステップが必要になる場合があります。
コードをテストしたところ、問題が確認されました。コードをテストするために、N = 1 を割り当てたところ、次の出力が表示されました。
(-1,0,1) これは最初のステップのはずですが、複数のステップ (x-1 と z+1 の両方) が必要でした。
(-2,0,1) ステップ変数の数 (N) = 1 ですが、これは 2 番目の出力ですが、なぜ表示されたのですか? 助けてくれてありがとう