Skip to main content
 首页 » 编程设计

python之为什么 Python 的 randint 函数实际上不是随机的

2025年05月04日18qq号

我用 Python 编写代码有一段时间了,我偶然发现了 Codecademys 的练习,其中一个项目是创建一个战舰游戏,将 2x1 的战舰随机放置在 5x5 的网格中。在我女朋友连续 3 次正确猜出船的位置后,我注意到了一个规律。 col 的 randint 和 row 的 randint 从 0,1 开始。然后程序终止。再次启动程序后,答案是 1,2。接下来的三个答案是 2,3, 3,4, 4,0。为什么会发生这种情况而不是真正随机的?

代码如下:

import os, sys 
from random import randint 
os.system("cls") 
board = [] 
for x in range(0, 5): 
    board.append(["O"] * 5) 
def print_board(board): 
    for row in board: 
        print " ".join(row) 
print_board(board) 
def random_row(board): 
    return randint(0, len(board) - 1) 
def random_col(board): 
    return randint(0, len(board[0]) - 1) 
ship_row = random_row(board) 
ship_col = random_col(board) 
guess_row = int(raw_input("Guess Row:")) 
guess_col = int(raw_input("Guess Col:")) 
# Write your code below! 
while guess_row!=ship_row and guess_col!=ship_col: 
    print"You missed my battleship!" 
    for i in range(len(board)): 
        if i==guess_col: 
            board[guess_row][i]="X" 
    print_board(board) 
    guess_row = int(raw_input("Guess Row:")) 
    guess_col = int(raw_input("Guess Col:")) 
print"Congratulations! You sank my Battleship!" 

请您参考如下方法:

您的情况存在错误 - 您应该检查行或列是否错误,而不是两者是否都错误。事实上,如果只有一个数字是错误的,你的程序就会说你赢了——所以有很多输入都赢了。您注意到的模式只是巧合。