numpy 我将代码解释为一个实践,但我不知道为什么结果中会出现数字3

t40tm48m  于 2023-01-05  发布在  其他
关注(0)|答案(1)|浏览(126)

我目前正在尝试随机掷骰子,并为random_walk设置如下情况。

  • 当骰子的数目小于或等于2时,您可以比该数目少走一步。
  • 当骰子的数目小于或等于5时,那么你可以比这个数目更进一步。
  • 否则,那么你可以去6步+阿尔法(再次掷骰子,把值加起来是6)

当我运行代码时,结果如下所示:
[0、3、4、5、4、5、6、7、6、5、4、3、...]
但我还是不明白为什么结果是3。
例如,如果我掷骰子得到数字2,那么我的可用步数应该是1;如果我掷骰子得到数字3,那么我的可用步数应该是4。
我没看到有三个人的房间,你能告诉我它是从哪里来的吗?
下面是我的代码:

random_walk = [0]

for x in range(100) :
    step = random_walk[-1]
    dice = np.random.randint(1,7)
    
    if dice <= 2:
        # Replace below: use max to make sure step can't go below 0
        step = max(0, step - 1)
    elif dice <= 5:
        step = step + 1
    else:
        step = step + np.random.randint(1,7)
    
    random_walk.append(step)
print(random_walk)
kiz8lqtg

kiz8lqtg1#

您当前的逻辑是在上一步中加上/减去1,因此上一步为2时得到3。看起来应该如此

random_walk = [0]

for x in range(100) : 
    step = random_walk[-1] 
    dice = np.random.randint(1,7)
    
    if dice <= 2:
    # Replace below: use max to make sure step can't go below 0
        step = max(0, dice - 1)
    elif dice <= 5:
        step = dice + 1
    else:
        step = 6 + np.random.randint(1,7)
    random_walk.append(step)
print(random_walk)

顺便说一下,你的问题是不相关的Pandas或 Dataframe ,所以你应该删除这些标签。

相关问题