Python mảng lựa chọn ngẫu nhiên

Số ngẫu nhiên có các ứng dụng rất quan trọng trong thế giới thiết lập chương trình. Chúng có thể được sử dụng để tạo các mô phỏng, các trường hợp thử nghiệm cho hệ thống kê hoặc tiền điện tử, để tạo ra các vấn đề mà chúng tôi yêu cầu một kết quả ngẫu nhiên hoặc không thể đoán trước, và hơn thế nữa

Nội dung chính Hiển thị

Trong Python, chúng ta có thể tạo ra một loạt các số ragndom bằng các mô-đun và hàm khác nhau. Trong bài viết này, chúng tôi sẽ thảo luận về cách tạo hiệu quả các số ngẫu nhiên trong khoảng từ 1 đến 10 trong Python

Lưu ý rằng mặc dù các ví dụ của chúng tôi được giới hạn ở các số được tạo từ 1 đến 10 trong Python, chúng tôi có thể thay đổi phạm vi này thành giá trị mong muốn của chúng tôi

lục mục

  • Sử dụng ngẫu nhiên hàm. randint[] to have been Random integer from range vibao gồm. Ví dụ, ngẫu nhiên. Randint [0, 10] sẽ trả về một số ngẫu nhiên từ [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

    Ngẫu nhiên [ngẫu nhiên]  có nghiã là mình không có cách nào đoán trước được kết quả công việc, cái gì sẽ xảy ra. Trong Python có các hàm [function] và các trò chơi [game] để bạn sử dụng Ngẫu nhiên. Sau đây là một số ví dụ

    1] Trò chơi Xổ số [Trò chơi đoán]

    #GuessingGame.py
    import random # phải “nhập khẩu” chương trình random trước
    the_number = random.randint[1, 10]
    guess = int[input["Guess a number between 1 and 10: "]] # bạn đoán mò 1 số từ 1 đến 10
    while guess != the_number: # trong khi số bạn cho còn khác với số của máy cho thì cứ tiếp tục vòng lặp while
        if guess > the_number:
            print[guess, "was too high. Try again."] # không phải, số bạn cho lớn quá
        if guess < the_number:
            print[guess, "was too low. Try again."] # không phải, số bạn cho thấp quá
        guess = int[input["Guess again: "]] # Đóan lại đi !
    print[guess, "was the number! You win!"] # Đúng rồi bạn thắng
    

    Chú thích. Hàm [chức năng] ngẫu nhiên. randint[]. will for ta 1 integer [số nguyên] một cách ngẫu nhiên từ 1 đến 10, là số mà bạn/trẻ phải đoán cho đúng. 2 đối số [đối số] là 1 và 10 trong [] cách nhau 1 dấu phẩy có nghiã là từ 1 đến 10

    Bài tập: Sửa lại chương trình trên: thêm: nếu bạn đoán sai thì phải trả 2$ và tích lũy vào một biến có tên count. Nếu bạn đoán đúng bạn được 20$. Nhưng sau cùng coi bạn có lãnh được trọn 20$ không. Nếu count 20 thì bạn phải trả sai biệt giữa tổng số tiền đoán sai với 20$ khi bạn đoán trúng. Nếu bạn chưa làm được thì xem “bài giải” sau đây:

    2] Vòng xoay màu ngẫu nhiên

    Ta muốn vẽ vòng xoắn ốc với kích thước ngẫu nhiên, màu chọn ngẫu nhiên và vị trí con rùa cũng ngẫu nhiên

    Để dễ hiểu chương trình sau này, bạn cần biết trục tọa độ trên màn hình sẽ như thế nào, các hàm liên hệ

    Màn hình trong Python sẽ như sau

    Chiều ngang của màn hình được xác định bằng hàm rùa. window_width[]. Nửa phần bên trái của trục tung [y] sẽ có dấu trừ và chiều dài sẽ là -turtle. window_width[]//2. Half side part must not have less than and is rùa. window_width[]//2

    Tương tự. Chiều cao [chiều cao] của màn hình được xác định bằng hàm rùa. window_height[]. Nửa bên dưới trục hoành [x] sẽ có dấu trừ và chiều dài sẽ là –turtle. window_height[]//2

    Điểm gốc của đồ thị trên màn hình là tâm điểm O[0,0]

    Các hàm ngẫu nhiên. randrange[argument1, argument2] for a Random number from argument1 to argument2]

    Hàm ngẫu nhiên. randint[argument1, argument2] for a integer [số nguyên] từ đối số 1 đến đối số2. [Đối số= đối số]

    Sau đây là chương trình

    #RandomCircles.py
    import random
    import turtle # vì phải vẽ nên phải “nhập cảng” con rùa
    t = turtle.Pen[]
    turtle.bgcolor["black"]
    colors = ["red", "yellow", "blue", "green", "orange", "purple", 
              "white", "gray"] # danh sách [list] các màu
    for n in range[50]:
        # Vẽ những vòng xoắn có kích thước/màu một cách ngẫu nhiên tại vị trí cũng ngẫu nhiên
        t.pencolor[random.choice[colors]]   # Chọn 1 màu ngẫu nhiên 
        size = random.randint[10,40] # chọn kích thước vòng xoắn 1 cách ngẫu nhiên trong khoảng từ 10 đến 40 pixels [dots]
        # Chọn ngẫu nhiên 1 vị trí toạ độ [x,y] trên màn hình
        x = random.randrange[-turtle.window_width[]//2,
                             turtle.window_width[]//2]  # hoành độ ngẫu nhiên
        y = random.randrange[-turtle.window_height[]//2,
                             turtle.window_height[]//2] # tung độ ngẫu nhiên
        t.penup[]
        t.setpos[x,y] # định vị trí “con rùa” vừa cho ngẫu nhiên bên trên
        t.pendown[]
        for m in range[size]: # vòng lặp vẽ vòng xoắn tròn 
            t.circle[m*2]
            t.left[360 / size + 2]
    

    Kết quả sau khi Run->Run module bạn sẽ có các vòng xoắn tròn với các màu tùy chọn ngẫu nhiên và ở các vị trí ngẫu nhiên

    File file. thay vì vòng xoắn tròn, bạn vẽ hình vòng xoắn vuông ngẫu nhiên, bạn sẽ có kết quả như hình 6-3 sau đây. [xem chương trình RandomSpirals. py trong thư mục ch6]

    Hình 6-3

    3] TRÒ CHƠI ĐÁNH TÙ TÌ RA CÁI G Ì RA CÁI NÀY

    Luật lệ của trò chơi này hầu như bạn/cô bé nào cũng biết. kéo cắt mài, kéo cắt giấy, giấy nhám. Giờ bạn chơi trò chơi này với đối phương là cái máy tính [máy tính] của bạn. Xem chương trình sau bạn sẽ biết chương trình sẽ viết thế nào

    #RockPaperScissors.py
    import random   # “nhập cảng” đúng ra là gọi chương trình random của Python 
    choices = ["hammer", "paper", "scissors"] # danh sách tên các thứ bạn/computer chọn 
    print["Hammer crushes scissors. Scissors cut paper. Paper covers hammer."] # luật lệ của trò chơi
    player = input["Do you want to be hammer, paper, or scissors [or quit]? "] # bạn ra cái gì? búa, giấy hay kéo hay quit?
    while player != "quit":           # Tiếp tục chơi trong khi bạn chưa gõ chữ quit 
        player = player.lower[]   # Chuyển cái bạn chọn ra thành chữ thường [lower case]
        computer = random.choice[choices]   # computer chọn ngẫu nhiên một cái trong danh sách choices
        print["You chose " +player+ ", and the computer chose " +computer+ "."] # cho hiện ra cái bạn chọn và cái computer chọn. Dấu + để nối các biến player và computer vào với các string [text] mà thôi
        if player == computer: # nếu giống nhau
            print["It's a tie!"] # giống nhau thì huề
        elif player == "hammer":  # nếu bạn chọn búa
            if computer == "scissors": # nếu computer chọn kéo
                print["You win!"]  # bạn thắng
            else:  # nếu không
                print["Computer wins!"] # computer thắng
        elif player == "paper":  # nếu bạn ra giấy
            if computer == "hammer": # và nếu computer ra búa
                print["You win!"] # thì bạn thắng
            else: # nếu không
                print["Computer wins!"] # computer thắng
        elif player == "scissors": # nếu bạn ra kéo
            if computer == "paper": # và nếu computer ra giấy
                print["You win!"] # thì bạn thắng 
            else: # nếu không
                print["Computer wins!"] # computer thắng
        else: 
            print["I think there was some sort of error..."] # có gì đó sai rồi
        print[]                             # Nhảy 1 dòng trống
        player = input["Do you want to be hammer, paper, or scissors [or quit]? "] # chơi tiếp hay gõ quit để nghỉ chơi? 
    

    4] ĐÁNH BÀI

    Chương trình sau này dành cho phụ huynh giải trí hơn là cho trẻ con vì không nên dạy trẻ đánh bài, đi Casino. Những câu lệnh đó cũng không có gì lạ, phụ huynh tự tìm hiểu để thấy những câu lệnh có sử dụng những hàm ngẫu nhiên [ngẫu nhiên] như thế nào. Đánh bài là một trong những trò chơi ngẫu nhiên phổ biến nhất

    # HighCard.py 
    import random
    suits = ["clubs", "diamonds", "hearts", "spades"] # list các suits 
    faces = ["two", "three", "four", "five", "six", "seven", "eight", "nine",
             "ten", "jack", "queen", "king", "ace"] # list các faces 
    keep_going = True  # Boolean variable 
    while keep_going:  # mới đầu keep_going là True 
        my_face = random.choice[faces] # bạn chọn một face ngẫu nhiên
        my_suit = random.choice[suits] # bạn chọn một suit ngẫu nhiên
        your_face = random.choice[faces] # computer chọn một face ngẫu nhiên
        your_suit = random.choice[suits] # computer chọn một suit ngẫu nhiên
        print["I have the", my_face, "of", my_suit]
        print["You have the", your_face, "of", your_suit]
        if faces.index[my_face] > faces.index[your_face]:
            print["I win!"]  # tôi thắng
        elif faces.index[my_face] < faces.index[your_face]: # elif : else if
            print["You win!"]  # bạn thắng
        else:
            print["It's a tie!"]  # huề
        answer = input["Hit [Enter] to keep going, any key to exit: "] # muốn tiếp tục đánh bài thì nhấn nút ENTER, trái lại thì bấm bất cứ nút nào trên bàn phím
        keep_going = [answer == ""] # bấm ENTER thì keep_going vẫn là True nên vòng loop WHILE vẫn tiếp tục. Trái lại nó không True tức là FALSE thì máy ngưng
    

    bộ quần áo

    khuôn mặt

     

    Chú thích. array[dãy,array] is a file composits of anything similar. Trong Python, list [danh sách] as list suits or faces said on is array. Tuy nhiên, trong một mảng ta không biết “giá trị” [value] mỗi phần tử trong đó. Phải nhờ đến một chỉ mục [chỉ số] trong đó ghi số thứ tự từ thấp nhất lên cao nhất của các phần tử tương ứng trong mảng. Thí dụ

    Giá trị trong mảng Suits“câu lạc bộ”“kim cương”“trái tim”“chỉ số bích 0123

    Hàm để tìm chỉ mục của một phần tử trong danh sách [hay mảng] là. mục lục[]. Các giới hạn ta có lệnh phù hợp. chỉ mục ["bích"]. will for ta index of spades in suits is 3. Nếu chỉ số của một phần tử nào trong mảng mà lớn hơn chỉ số của phần tử khác trong mảng thì phần tử đó có “giá trị” cao hơn. Nhờ hàm này mà ta mới biết con bài nào cao hơn

    5] CHƠI XÚC XẮC – hay XÍ NGẦU [DICE] – YAHTZEE

    5 Con xúc xắc [xúc xắc]

    Luật chơi. bạn có 5 con xúc xắc [xúc xắc]. Mỗi con có 6 mặt, mỗi mặt có một số chấm đen [chấm] từ 1 đến 6 chấm. Bạn gieo một lúc 5 xúc xắc. Nếu cả 5 con đều có số chấm đen giống nhau thì bạn được Yahtzee. Hoặc bạn có 4 hoặc 3 con có số chấm đen như nhau

    # FiveDice2.py
    import random
    # Game loop
    keep_going = True # Boolean variable chỉ có 2 trị True và False
    while keep_going:
     # "Gieo" 5 con xúc xắc ngẫu nhiên
      dice = [0,0,0,0,0] # Tạo một array với 5 trị số là 0: dice[0]->dice[4]
      for i in range[5]: # "Gieo" một số nguyên ngẫu nhiên từ 1 đến 6 cho tất cả 5 con xúc xắc
          dice[i] = random.randint[1,6] # hàm cho số nguyên ngẫu nhiên
      print["You rolled:", dice] # Print [cho hiện ra màn hình các trị số của dice] 
     # Sort [xếp thứ tự] chúng từ nhỏ đến lớn
      dice.sort[]                  # xem chú thích
     # Check coi cả 5 dices đều giống nhau, hay 4 hay 3 dices giống nhau
     # Yahtzee – là khi cả 5 dices đều giống nhau [có cùng số dots]
      if dice[0] == dice[4]:
          print["Yahtzee!"]
     # test 4 dices đầu giống nhau hay 4 dices cuối giống nhau
      elif [dice[0] == dice[3]] or [dice[1] == dice[4]]:
          print["Four of a kind!"]
     # test 3 slices đầu, 3 dices giữa, hay 3 dices cuối giống nhau
      elif [dice[0] == dice[2]] or [dice[1] == dice[3]] or [dice[2] == dice[4]]:
           print["Three of a kind"]
      keep_going = [input["Hit [Enter] to keep going, any key to exit: "] == ""]
    

    Chú thích

    Tại sao phải sắp xếp [xếp thứ tự] trong mảng xúc xắc?

    Nếu không sắp xếp, ví dụ có 3 con xúc xắc giống nhau

    dice[1,3,2,3,3] ta phải test 5 lần để tìm 3 số giống nhau

    Nhưng nếu sort ta sẽ có xúc xắc[1,2,3,3,3], ta sẽ chỉ thử xúc xắc[2] với xúc xắc[4] xem chúng có bằng nhau hay không thôi

    Hoặc nếu ta có xúc xắc[5,3,2,3,3] thì khi sắp xếp ta sẽ có xúc xắc[2,3,3,3,5] và ta chỉ cần so sánh xúc xắc[1] và xúc xắc[3] thôi. Với 4 viên xúc xắc giống nhau ta chỉ cần xúc xắc[0] với xúc xắc[3] hoặc xúc xắc[1] với xúc xắc[4]. Nếu có 5 viên xúc xắc giống nhau, sau khi sắp xếp ta chỉ cần so sánh viên xúc xắc[0] với viên xúc xắc[4] v. v

Chủ Đề