Chúng tôi đã sử dụng các
ifđiều kiện của chúng tôi để kiểm tra các giá trị về môi trường, như vị trí chuột hiện tại của người dùng và phản hồi có thể dự đoán được.
Nhưng nếu chúng ta muốn không thể đoán trước thì sao? Điều gì xảy ra nếu chúng ta muốn chương trình của chúng ta hành động khác nhau mỗi khi nó chạy?
Sự ngẫu nhiên để giải cứu!
Chúng tôi có thể tạo số ngẫu nhiên và sử dụng
ifvà else ifđiều kiện để thay đổi hành vi của chương trình dựa trên các giá trị ngẫu nhiên.
Ví dụ:
var randNum = random(0, 10);
if (randNum < 5) {
text("Trick!", 200, 200);
} else {
text("Treat!", 200, 200);
}
Chương trình xuất ra "Trick!" một nửa thời gian và "Điều trị!" nửa còn lại.
Làm thế nào nó hoạt động:
- Các
randNumbiến được gán một số ngẫu nhiên, bắt đầu từ 0 và bao gồm cả số lên đến 10 giá trị trả lại có thể bao gồm 0, 0.2, 3.3, 4, 5.5, 6.9, 8, 9, hoặc 9,99, nhưng không phải 10 chính nó. - Điều kiện kiểm tra nếu số được trả về nhỏ hơn 5, xuất ra "Trick!" nếu vậy và "Điều trị! ' nếu không thì.
Đôi khi, dễ dàng hơn để xử lý các số nguyên thay vì số dấu phẩy động, để chúng tôi có thể kiểm tra các giá trị chính xác. Dưới đây là một số hàm biến số dấu phẩy động thành số nguyên:
Thông thường chúng tôi muốn tạo số ngẫu nhiên được chọn tương đối đồng đều. Ví dụ: nếu chúng ta đang mô phỏng việc lật một đồng xu, thì chúng ta hy vọng sẽ có cơ hội ngang nhau là "Thủ trưởng" hoặc "Đuôi".
Mã này hoàn thành mục tiêu đó:
var randFlip = floor(random(0, 2));
if (randFlip === 0) {
text("Heads", 200, 200);
} else {
text("Tails", 200, 200);
}
Biến
randFlipsẽ luôn là 0 hoặc 1, vì nó gọi floor()giá trị trả về là random(0, 2).
Để cho bạn biết lý do tại sao lại như vậy, đây là kết quả của việc kêu gọi
floor()các giá trị khác nhau từ random(0, 2):random(0, 2) | floor(result) |
|---|---|
| 0,0 | 0 |
| 0,217 | 0 |
| 0,542 | 0 |
| 0,973 | 0 |
| 1 | 1 |
| 1.32 | 1 |
| 1.589 | 1 |
| 1.999 | 1 |
Các giá trị trả về
random()là ngẫu nhiên, vì vậy chúng sẽ không nhất thiết phải được phân phối bằng nhau như các giá trị trong bảng đó. Nếu bạn chạy mã lật đồng xu chỉ 10 lần, bạn có thể thấy một chuỗi gồm tất cả "Đầu" hoặc tất cả "Đuôi". Tuy nhiên, nếu bạn chạy nó hàng ngàn lần và tiếp tục đếm, bạn sẽ thấy "Đầu" và "Đuôi" mỗi lần khoảng 50%.
Theo nguyên tắc chung, khi mục tiêu của chúng tôi là có được sự phân phối công bằng và thậm chí các giá trị số nguyên, tốt nhất nên sử dụng
floor()với random().
Các
random()chức năng là một cách tuyệt vời để thêm nhiều chút để chương trình của bạn. Tuy nhiên, hãy sử dụng nó một cách cẩn thận: tìm ra phạm vi các số bạn đang tạo, quyết định xem bạn có cần làm tròn số hay không và kiểm tra các giá trị một cách thích hợp.
Bạn sẽ có cơ hội thử điều đó trong dự án tiếp theo!
Nhận xét
Đăng nhận xét