Cách tạo dữ liệu mô phỏng trong python

Trong bài viết này, tôi chỉ cho bạn cách tạo một lớp

Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
98 đơn giản trong Python. Mục đích của lớp là chạy mô phỏng nhiều lần và sau đó trả về số liệu thống kê (e. g. , trung bình, trung bình, v.v. ) trên kết quả mô phỏng

Hãy bắt đầu với một lớp

Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
99 đơn giản có phương thức
Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
00 trả về một số nguyên trong khoảng từ 1 đến 6 (đã bao gồm)

import random


class Die:
    def __init__(self, sides=6):
        self.sides = sides

    def roll(self):
        return random.randint(1, self.sides)

Chúng tôi muốn lớp

Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
98 của chúng tôi nhận hai đối số. một chức năng để chạy và số lần để chạy nó (
Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
0) và sau đó để chạy chức năng
Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
0 lần và trả về một báo cáo như thế này

Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124

Đây là lớp

Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
98 thực hiện điều này

import statistics as stats


class SimulationNumeric:
    """Runs a function that returns a number n times and prints stats

    Args:
        fnct_to_run (function): The function to run
        iterations (integer): The number of times to run it"""

    def __init__(self, fnct_to_run, iterations):
        self._fnct_to_run = fnct_to_run
        self._iterations = iterations
        self._results = []
        self.run()

    @property
    def mode(self):
        try:
            return stats.mode(self._results)
        except:
            return None

    def run(self):
        for i in range(self._iterations):
            result = self._fnct_to_run()
            self._results.append(result)

        self.report()

    def report(self):
        max_num = max(self._results)
        min_num = min(self._results)
        mean = stats.mean(self._results)
        median = stats.median(self._results)
        mode = self.mode
        std_dev = stats.stdev(self._results)
        variance = stats.variance(self._results)
        print(
            f"""Number of Simulations: {self._iterations:,}
Max: {max_num}
Min: {min_num}
Mean: {mean}
Median: {median}
Mode: {mode}
Standard Deviation: {std_dev}
Variance: {variance}"""
        )


die = Die()
sim = SimulationNumeric(die.roll, 1000)

Lớp này sẽ hoạt động tốt với một hàm trả về một số

Lưu ý rằng lý do

Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
3 được viết dưới dạng thuộc tính là không phải tất cả các tập kết quả đều có chế độ. Ví dụ: nếu hai số được cuộn cùng một số lần và cả hai số đó được cuộn thường xuyên hơn bất kỳ số nào khác, thì sẽ không có chế độ. Trong trường hợp đó,
Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
4 sẽ báo lỗi. Mã của chúng tôi bắt lỗi đó và trả về
Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
5 cho chế độ trong trường hợp đó

Thế giới thực có rất nhiều hệ thống, như sân bay và đường cao tốc, thường xuyên bị tắc nghẽn và chậm trễ. Khi các hệ thống này không được tối ưu hóa, sự kém hiệu quả của chúng có thể dẫn đến vô số khách hàng không hài lòng và lãng phí thời gian. Trong hướng dẫn này, bạn sẽ học cách sử dụng khung công tác

import simpy
import random
import statistics
8 của Python để tạo các mô phỏng ảo giúp bạn giải quyết các vấn đề như thế này

Trong hướng dẫn này, bạn sẽ học cách

  • Sử dụng mô phỏng để mô hình hóa một quy trình trong thế giới thực
  • Tạo thuật toán từng bước để tính gần đúng một hệ thống phức tạp
  • Thiết kế và chạy mô phỏng thế giới thực bằng Python với
    import simpy
    import random
    import statistics
    
    8

Trong hướng dẫn này, bạn sẽ tạo mô phỏng cho một rạp chiếu phim địa phương. Mục tiêu của bạn là cung cấp cho người quản lý một tập lệnh để giúp tìm ra số lượng nhân viên tối ưu cần có trong đội ngũ nhân viên. Bạn có thể tải xuống mã nguồn cho tập lệnh này bằng cách nhấp vào liên kết bên dưới

Tải xuống mã. Nhấp vào đây để tải xuống mã mà bạn sẽ sử dụng để tìm hiểu về SimPy trong hướng dẫn này

Mô phỏng là gì

Một mô phỏng là một đại diện của một hệ thống trong thế giới thực. Người ta có thể sử dụng các mô hình toán học hoặc tính toán của hệ thống này để nghiên cứu cách thức hoạt động của nó hoặc điều gì sẽ xảy ra khi các bộ phận của nó bị thay đổi. Mô phỏng được sử dụng trong sân bay, nhà hàng, cơ khí, cơ quan chính phủ và nhiều hệ thống khác, nơi phân bổ nguồn lực kém có thể dẫn đến tắc nghẽn, sự không hài lòng của khách hàng và sự chậm trễ nghiêm trọng trong vận chuyển

Một hệ thống có thể là bất kỳ môi trường nào mà mọi thứ xảy ra. Ví dụ về các hệ thống trong thế giới thực bao gồm rửa xe, ngân hàng, nhà máy sản xuất, sân bay, bưu điện, trung tâm cuộc gọi, v.v. Các hệ thống này có các tác nhân trải qua các quy trình bên trong chúng. Ví dụ

  • Một tiệm rửa xe sẽ có những chiếc xe trải qua quá trình rửa
  • Một sân bay sẽ có hành khách đi qua quá trình kiểm tra an ninh
  • Một trung tâm cuộc gọi sẽ yêu cầu khách hàng trải qua quá trình nói chuyện với một nhân viên tiếp thị qua điện thoại

Mối quan hệ này được tóm tắt trong bảng dưới đây

Hệ thống Đại lýQuy trìnhRửa xeRửa xeSân bayHành kháchKiểm tra an ninhTrung tâm cuộc gọiKhách hàngNói chuyện với nhân viên tiếp thị qua điện thoại

Hiểu các quy trình mà các tác nhân trải qua trong một hệ thống là một thành phần quan trọng của việc lập kế hoạch hậu cần, đặc biệt đối với các tổ chức quy mô lớn. Ví dụ: một sân bay có thể thấy thời gian chờ đợi của hành khách tại điểm kiểm tra an ninh tăng vọt nếu không có đủ nhân viên vào ngày hôm đó. Tương tự như vậy, thư nhạy cảm với thời gian có thể bị trì hoãn hàng ngày (hoặc thậm chí hàng tuần) nếu nó không được định tuyến đúng cách

Những trường hợp tắc nghẽn này có thể gây ra hậu quả thực tế về thời gian và tiền bạc, vì vậy, điều quan trọng là có thể mô hình hóa các quy trình này trước. Điều này cung cấp cho bạn ý tưởng về nơi hệ thống có thể gặp sự cố và cách phân bổ tài nguyên trước thời hạn để giải quyết những vấn đề đó theo cách hiệu quả nhất có thể

Loại bỏ các quảng cáo

Mô phỏng hoạt động như thế nào

Trong Python, bạn có thể sử dụng khung công tác

import simpy
import random
import statistics
8 để mô phỏng sự kiện. Trước tiên, hãy xem nhanh quy trình mô phỏng sẽ chạy như thế nào trong Python. Dưới đây là đoạn mã từ mô phỏng hệ thống điểm kiểm tra an ninh. Ba dòng mã sau thiết lập môi trường, chuyển tất cả các chức năng cần thiết và chạy mô phỏng

Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
1

Dòng mã đầu tiên ở trên thiết lập môi trường. Bạn sẽ làm điều này bằng cách gán

Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
21 cho biến mong muốn. Ở đây, nó được đặt tên đơn giản là
Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
22. Điều này yêu cầu
import simpy
import random
import statistics
8 tạo một đối tượng môi trường có tên là
Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
22 sẽ quản lý thời gian mô phỏng và di chuyển mô phỏng qua từng bước thời gian tiếp theo

Khi bạn đã thiết lập môi trường của mình, bạn sẽ chuyển vào tất cả các biến sẽ đóng vai trò là tham số của bạn. Đây là những điều bạn có thể thay đổi để xem hệ thống sẽ phản ứng thế nào với những thay đổi. Đối với hệ thống điểm kiểm tra bảo mật này, bạn đang sử dụng các thông số sau

  1. Number of Simulations: 1,000
    Max: 6
    Min: 1
    Mean: 3.522
    Median: 4.0
    Mode: 4
    Standard Deviation: 1.7018849586304041
    Variance: 2.8964124124124124
    22. đối tượng môi trường để lên lịch và xử lý các sự kiện
  2. Number of Simulations: 1,000
    Max: 6
    Min: 1
    Mean: 3.522
    Median: 4.0
    Mode: 4
    Standard Deviation: 1.7018849586304041
    Variance: 2.8964124124124124
    26. số lượng gian hàng kiểm tra ID
  3. Number of Simulations: 1,000
    Max: 6
    Min: 1
    Mean: 3.522
    Median: 4.0
    Mode: 4
    Standard Deviation: 1.7018849586304041
    Variance: 2.8964124124124124
    27 khoảng thời gian cần thiết để kiểm tra ID của hành khách
  4. Number of Simulations: 1,000
    Max: 6
    Min: 1
    Mean: 3.522
    Median: 4.0
    Mode: 4
    Standard Deviation: 1.7018849586304041
    Variance: 2.8964124124124124
    28. tốc độ mà hành khách đến hàng đợi

Sau đó, đã đến lúc chạy mô phỏng. Bạn có thể làm điều này bằng cách gọi

Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
29 và chỉ định thời gian bạn muốn mô phỏng chạy trong bao lâu. Mô phỏng chạy trong vài phút, vì vậy mã mẫu này sẽ chạy mô phỏng trong 10 phút thời gian thực

Ghi chú. Đừng lo. Bạn sẽ không phải đợi 10 phút thực tế để quá trình mô phỏng kết thúc. Vì mô phỏng cung cấp cho bạn cái nhìn ảo về quy trình thời gian thực, nên 10 phút đó sẽ trôi qua chỉ trong vài giây trên máy tính

Tóm lại, đây là ba bước để chạy mô phỏng trong Python

  1. Thiết lập môi trường
  2. Truyền tham số
  3. Chạy mô phỏng

Nhưng còn nhiều điều nữa đang diễn ra bên dưới mui xe. Bạn sẽ cần hiểu cách chọn các tham số đó và bạn sẽ phải xác định tất cả các chức năng sẽ được gọi khi chạy mô phỏng

Bắt đầu nào

Làm thế nào để bắt đầu với import simpy import random import statistics 8

Có một số việc cần làm bạn nên đánh dấu khỏi danh sách của mình trước khi tạo mô phỏng bằng Python. Điều đầu tiên bạn cần làm là đảm bảo rằng bạn có hiểu biết cơ bản về Python. Cụ thể, bạn sẽ cần nắm vững các lớp và trình tạo

Ghi chú. Nếu bạn cần làm mới các chủ đề này, thì hãy xem Giới thiệu về Lập trình hướng đối tượng (OOP) trong Python và Giới thiệu về Trình tạo Python. Đây là những phần quan trọng của quá trình mô phỏng, vì vậy bạn sẽ cần hiểu chúng trước khi tiếp tục

Điều tiếp theo bạn muốn làm là cài đặt gói cần thiết. Khung chính bạn sẽ sử dụng là

import simpy
import random
import statistics
8. Đây là gói cốt lõi sẽ tạo, quản lý và chạy mô phỏng của bạn. Bạn có thể cài đặt nó với
Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
32

Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
4

Bạn cũng sẽ cần một vài mô-đun Python tích hợp. Bạn sẽ sử dụng mô-đun

Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
33 để tính thời gian chờ trung bình và mô-đun
Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
34 để tạo số ngẫu nhiên. Chúng là một phần của thư viện chuẩn Python, vì vậy bạn không cần phải cài đặt bất kỳ thứ gì mới

Cuối cùng, bạn sẽ cần chọn cách bạn muốn chạy mô phỏng của mình. Nói chung, bạn có thể chọn một trong hai tùy chọn

  1. Chạy nó một cách tương tác. Sử dụng Máy tính xách tay Jupyter, trong đó mỗi khối mã sẽ chứa định nghĩa chức năng hoặc lớp riêng của nó. Đầu ra sẽ được hiển thị ở cuối sổ ghi chép
  2. Chạy nó trong vỏ. Lưu mô phỏng của bạn dưới dạng tệp
    Number of Simulations: 1,000
    Max: 6
    Min: 1
    Mean: 3.522
    Median: 4.0
    Mode: 4
    Standard Deviation: 1.7018849586304041
    Variance: 2.8964124124124124
    35 và yêu cầu Python chạy nó trong thiết bị đầu cuối của bạn. Đầu ra sẽ được in trực tiếp ra bàn điều khiển

Chọn bất kỳ phương pháp nào bạn cảm thấy thoải mái nhất. Kết quả phải giống nhau

Trong suốt hướng dẫn này, bạn sẽ thấy các tham chiếu đến một tệp độc lập có tên

Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
36. Khi bạn xem qua phần hướng dẫn này, các khối mã sẽ tham chiếu đến
Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
36 để giúp bạn theo dõi xem tất cả các phần khớp với nhau như thế nào. Để tham khảo, bạn có thể truy cập mã đầy đủ cho
Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
36 tại liên kết bên dưới

Tải xuống mã. Nhấp vào đây để tải xuống mã mà bạn sẽ sử dụng để tìm hiểu về SimPy trong hướng dẫn này

Vui lòng lưu tệp

Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
36 và theo dõi trong trình chỉnh sửa yêu thích của bạn

Loại bỏ các quảng cáo

Cách mô phỏng với gói import simpy import random import statistics 8

Bước đầu tiên để chạy mô phỏng trong

import simpy
import random
import statistics
8 là chọn một quy trình để mô hình hóa. Mô phỏng là tất cả về việc tạo ra một môi trường ảo để phản ánh một hệ thống trong thế giới thực. Cũng với tinh thần đó, bạn sẽ “mô phỏng” một tình huống cho mô phỏng của mình

Hãy tưởng tượng bạn được thuê để giúp người quản lý cho một rạp chiếu phim nhỏ ở địa phương. Nhà hát đã nhận được đánh giá kém do thời gian chờ đợi lâu. Người quản lý, người vừa quan tâm đến chi phí vừa quan tâm đến sự hài lòng của khách hàng, chỉ có thể đủ khả năng để giữ chân rất nhiều nhân viên

Người quản lý đặc biệt lo lắng về sự hỗn loạn có thể xảy ra khi những bộ phim bom tấn đó bắt đầu ra mắt. hàng người xếp hàng quanh rạp, nhân viên căng hết cỡ, khán giả tức giận bỏ lỡ cảnh mở đầu… Đây chắc chắn là tình huống cần tránh

Sau khi kiểm tra các bài đánh giá, người quản lý có thể xác định rằng một khán giả nhất định đến rạp của họ sẵn sàng dành tối đa 10 phút kể từ khi họ đến cho đến khi họ đặt mông vào ghế. Nói cách khác, thời gian chờ đợi trung bình cho một đêm tại rạp chiếu phim cần từ 10 phút trở xuống. Người quản lý đã yêu cầu sự giúp đỡ của bạn để tìm ra giải pháp giúp khách hàng có được thời gian chờ đợi theo yêu cầu 10 phút này

Động não một thuật toán mô phỏng

Trước khi bạn viết ra một dòng mã, điều quan trọng trước tiên là bạn phải hình dung quy trình của bạn sẽ chạy như thế nào trong cuộc sống thực. Điều này nhằm đảm bảo rằng, khi bạn chuyển nó vào máy, quy trình sẽ phản ánh chính xác những gì khách hàng sẽ thực sự trải nghiệm. Đây là cách bạn có thể nghĩ về các bước mà một người xem phim có thể thực hiện để viết ra thuật toán của bạn

  1. Đến rạp, xếp hàng chờ mua vé
  2. Mua vé từ phòng vé
  3. Xếp hàng chờ kiểm tra vé
  4. Nhận vé kiểm tra bởi một usher
  5. Chọn có xếp hàng vào gian hàng nhượng quyền hay không
    • Nếu họ xếp hàng, thì họ mua thức ăn
    • Nếu họ không xếp hàng, thì họ bỏ qua bước cuối cùng
  6. Đi tìm chỗ ngồi của họ

Đây là bước lặp lại từng bước dành cho khán giả mua vé tại phòng vé của nhà hát. Bạn đã có thể thấy phần nào của quy trình này có thể được kiểm soát. Bạn có thể ảnh hưởng đến thời gian chờ đợi của khách hàng bằng cách có nhiều nhân viên thu ngân hơn tại phòng vé

Cũng có những phần của quy trình không thể kiểm soát được, chẳng hạn như bước đầu tiên. Bạn không thể kiểm soát số lượng khách hàng sẽ đến hoặc họ sẽ đến nhanh như thế nào. Bạn có thể đoán, nhưng bạn không thể chỉ chọn một con số, vì đó sẽ phản ánh thực tế kém. Đối với tham số này, điều tốt nhất bạn có thể làm là sử dụng dữ liệu có sẵn để xác định thời gian đến phù hợp

Ghi chú. Sử dụng dữ liệu lịch sử đảm bảo rằng giải pháp bạn tìm thấy sẽ phản ánh chính xác những gì bạn có thể thấy trong cuộc sống thực

Với những điều này trong tâm trí, đã đến lúc xây dựng mô phỏng của bạn

Thiết lập môi trường

Trước khi bắt đầu xây dựng mô phỏng của mình, bạn cần đảm bảo rằng môi trường phát triển của mình được định cấu hình đúng cách. Điều đầu tiên bạn muốn làm là nhập các gói cần thiết. Bạn có thể làm điều này bằng cách khai báo các câu lệnh

Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
42 ở đầu tệp của bạn

________số 8

Đây là những thư viện chính mà bạn sẽ sử dụng để xây dựng kịch bản cho người quản lý rạp hát. Hãy nhớ rằng, mục tiêu là tìm số lượng nhân viên tối ưu để thời gian chờ đợi trung bình dưới 10 phút. Để làm điều này, bạn sẽ cần thu thập khoảng thời gian cần thiết để mỗi khán giả đến chỗ ngồi của họ. Bước tiếp theo là khai báo một danh sách để giữ những thời điểm này

Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
2

Danh sách này sẽ chứa tổng thời gian mà mỗi khán giả dành để di chuyển trong rạp chiếu phim, từ khi đến cho đến khi ngồi vào chỗ của họ. Bạn khai báo danh sách này ở đầu tệp để bạn có thể sử dụng nó bên trong bất kỳ chức năng nào bạn xác định sau này

Tạo môi trường. Định nghĩa lớp

Phần đầu tiên của mô phỏng mà bạn muốn xây dựng là bản thiết kế cho hệ thống. Đây sẽ là môi trường tổng thể bên trong nơi mọi thứ diễn ra và con người hoặc đồ vật di chuyển từ nơi này sang nơi khác. Hãy nhớ rằng, một môi trường có thể là một trong nhiều hệ thống khác nhau, chẳng hạn như ngân hàng, tiệm rửa xe hoặc trạm kiểm soát an ninh. Trong trường hợp này, môi trường là một rạp chiếu phim, vì vậy đó sẽ là tên lớp học của bạn

Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
3

Bây giờ là lúc để suy nghĩ về các bộ phận của rạp chiếu phim. Tất nhiên, có chính rạp hát, đó là cái mà bạn gọi là môi trường của mình. Sau đó, bạn sẽ khai báo rõ ràng rạp hát là một

Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
43 thực tế bằng cách sử dụng một trong các hàm
import simpy
import random
import statistics
8. Hiện tại, gọi tắt là
Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
22 và thêm nó vào định nghĩa lớp

Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
4

Được rồi, còn gì khác có thể có trong một nhà hát? . Khi một khán giả đến xem phim, họ sẽ phải xếp hàng tại phòng vé, nơi một nhân viên thu ngân sẽ chờ sẵn để giúp họ. Bây giờ bạn đã khám phá ra hai điều về môi trường sân khấu

  1. Có thu ngân
  2. Khán giả xem phim có thể mua vé từ họ

Nhân viên thu ngân là một nguồn tài nguyên mà rạp chiếu cung cấp cho khách hàng của mình và họ giúp khán giả xem phim trong quá trình mua vé. Ngay bây giờ, bạn không biết có bao nhiêu nhân viên thu ngân có sẵn trong nhà hát mô phỏng. Trên thực tế, đó chính là vấn đề mà bạn đang cố gắng giải quyết. Thời gian chờ đợi thay đổi như thế nào, tùy thuộc vào số lượng nhân viên thu ngân làm việc trong một đêm nhất định?

Bạn có thể tiếp tục và gọi biến chưa biết này là

Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
46. Giá trị chính xác mà biến này sẽ lấy có thể được sắp xếp sau. Còn bây giờ, chỉ biết nó là một phần không thể thiếu của môi trường sân khấu. Thêm nó vào định nghĩa lớp

import statistics as stats


class SimulationNumeric:
    """Runs a function that returns a number n times and prints stats

    Args:
        fnct_to_run (function): The function to run
        iterations (integer): The number of times to run it"""

    def __init__(self, fnct_to_run, iterations):
        self._fnct_to_run = fnct_to_run
        self._iterations = iterations
        self._results = []
        self.run()

    @property
    def mode(self):
        try:
            return stats.mode(self._results)
        except:
            return None

    def run(self):
        for i in range(self._iterations):
            result = self._fnct_to_run()
            self._results.append(result)

        self.report()

    def report(self):
        max_num = max(self._results)
        min_num = min(self._results)
        mean = stats.mean(self._results)
        median = stats.median(self._results)
        mode = self.mode
        std_dev = stats.stdev(self._results)
        variance = stats.variance(self._results)
        print(
            f"""Number of Simulations: {self._iterations:,}
Max: {max_num}
Min: {min_num}
Mean: {mean}
Median: {median}
Mode: {mode}
Standard Deviation: {std_dev}
Variance: {variance}"""
        )


die = Die()
sim = SimulationNumeric(die.roll, 1000)
3

Tại đây, bạn thêm tham số mới

Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
46 vào định nghĩa
Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
48 của mình. Sau đó, bạn tạo một tài nguyên
Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
49 và sử dụng
import statistics as stats


class SimulationNumeric:
    """Runs a function that returns a number n times and prints stats

    Args:
        fnct_to_run (function): The function to run
        iterations (integer): The number of times to run it"""

    def __init__(self, fnct_to_run, iterations):
        self._fnct_to_run = fnct_to_run
        self._iterations = iterations
        self._results = []
        self.run()

    @property
    def mode(self):
        try:
            return stats.mode(self._results)
        except:
            return None

    def run(self):
        for i in range(self._iterations):
            result = self._fnct_to_run()
            self._results.append(result)

        self.report()

    def report(self):
        max_num = max(self._results)
        min_num = min(self._results)
        mean = stats.mean(self._results)
        median = stats.median(self._results)
        mode = self.mode
        std_dev = stats.stdev(self._results)
        variance = stats.variance(self._results)
        print(
            f"""Number of Simulations: {self._iterations:,}
Max: {max_num}
Min: {min_num}
Mean: {mean}
Median: {median}
Mode: {mode}
Standard Deviation: {std_dev}
Variance: {variance}"""
        )


die = Die()
sim = SimulationNumeric(die.roll, 1000)
30 để khai báo số lượng có thể có trong môi trường này tại bất kỳ thời điểm nào

Ghi chú. Trong

import simpy
import random
import statistics
8, tài nguyên là một phần của môi trường (
Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
22) có số lượng hạn chế. Sử dụng một trong số chúng cần có thời gian và chỉ có rất nhiều (
Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
46) có sẵn để sử dụng cùng một lúc

Còn một bước nữa mà bạn cần thực hiện. Một nhân viên thu ngân sẽ không mua vé cho chính họ, phải không? . Một lần nữa, bạn biết rằng quá trình mua vé này sẽ mất một khoảng thời gian nhất định. Nhưng chỉ cần bao nhiêu thời gian?

Giả sử bạn đã yêu cầu người quản lý cung cấp dữ liệu lịch sử về rạp hát, chẳng hạn như đánh giá hiệu suất của nhân viên hoặc biên lai mua vé. Dựa trên dữ liệu này, bạn đã biết được rằng trung bình mất từ ​​1 đến 2 phút để xuất vé tại phòng vé. Làm cách nào để bạn khiến

import simpy
import random
import statistics
8 bắt chước hành vi này?

Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
2

import statistics as stats


class SimulationNumeric:
    """Runs a function that returns a number n times and prints stats

    Args:
        fnct_to_run (function): The function to run
        iterations (integer): The number of times to run it"""

    def __init__(self, fnct_to_run, iterations):
        self._fnct_to_run = fnct_to_run
        self._iterations = iterations
        self._results = []
        self.run()

    @property
    def mode(self):
        try:
            return stats.mode(self._results)
        except:
            return None

    def run(self):
        for i in range(self._iterations):
            result = self._fnct_to_run()
            self._results.append(result)

        self.report()

    def report(self):
        max_num = max(self._results)
        min_num = min(self._results)
        mean = stats.mean(self._results)
        median = stats.median(self._results)
        mode = self.mode
        std_dev = stats.stdev(self._results)
        variance = stats.variance(self._results)
        print(
            f"""Number of Simulations: {self._iterations:,}
Max: {max_num}
Min: {min_num}
Mean: {mean}
Median: {median}
Mode: {mode}
Standard Deviation: {std_dev}
Variance: {variance}"""
        )


die = Die()
sim = SimulationNumeric(die.roll, 1000)
35 yêu cầu
import simpy
import random
import statistics
8 kích hoạt một sự kiện sau một khoảng thời gian nhất định đã trôi qua. Trong trường hợp này, sự kiện là một vé đã được mua

Thời gian này có thể là một phút, hai phút hoặc ba phút. Bạn muốn mỗi người xem phim dành một khoảng thời gian khác nhau tại quầy thu ngân. Để làm điều này, bạn sử dụng

import statistics as stats


class SimulationNumeric:
    """Runs a function that returns a number n times and prints stats

    Args:
        fnct_to_run (function): The function to run
        iterations (integer): The number of times to run it"""

    def __init__(self, fnct_to_run, iterations):
        self._fnct_to_run = fnct_to_run
        self._iterations = iterations
        self._results = []
        self.run()

    @property
    def mode(self):
        try:
            return stats.mode(self._results)
        except:
            return None

    def run(self):
        for i in range(self._iterations):
            result = self._fnct_to_run()
            self._results.append(result)

        self.report()

    def report(self):
        max_num = max(self._results)
        min_num = min(self._results)
        mean = stats.mean(self._results)
        median = stats.median(self._results)
        mode = self.mode
        std_dev = stats.stdev(self._results)
        variance = stats.variance(self._results)
        print(
            f"""Number of Simulations: {self._iterations:,}
Max: {max_num}
Min: {min_num}
Mean: {mean}
Median: {median}
Mode: {mode}
Standard Deviation: {std_dev}
Variance: {variance}"""
        )


die = Die()
sim = SimulationNumeric(die.roll, 1000)
37 để chọn một số ngẫu nhiên giữa các giá trị thấp và cao nhất định. Sau đó, đối với mỗi người xem phim, mô phỏng sẽ đợi trong khoảng thời gian đã chọn

Hãy gói nó trong một hàm gọn gàng và thêm nó vào định nghĩa lớp

Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
6

Người bắt đầu sự kiện trong

import statistics as stats


class SimulationNumeric:
    """Runs a function that returns a number n times and prints stats

    Args:
        fnct_to_run (function): The function to run
        iterations (integer): The number of times to run it"""

    def __init__(self, fnct_to_run, iterations):
        self._fnct_to_run = fnct_to_run
        self._iterations = iterations
        self._results = []
        self.run()

    @property
    def mode(self):
        try:
            return stats.mode(self._results)
        except:
            return None

    def run(self):
        for i in range(self._iterations):
            result = self._fnct_to_run()
            self._results.append(result)

        self.report()

    def report(self):
        max_num = max(self._results)
        min_num = min(self._results)
        mean = stats.mean(self._results)
        median = stats.median(self._results)
        mode = self.mode
        std_dev = stats.stdev(self._results)
        variance = stats.variance(self._results)
        print(
            f"""Number of Simulations: {self._iterations:,}
Max: {max_num}
Min: {min_num}
Mean: {mean}
Median: {median}
Mode: {mode}
Standard Deviation: {std_dev}
Variance: {variance}"""
        )


die = Die()
sim = SimulationNumeric(die.roll, 1000)
38 là
import statistics as stats


class SimulationNumeric:
    """Runs a function that returns a number n times and prints stats

    Args:
        fnct_to_run (function): The function to run
        iterations (integer): The number of times to run it"""

    def __init__(self, fnct_to_run, iterations):
        self._fnct_to_run = fnct_to_run
        self._iterations = iterations
        self._results = []
        self.run()

    @property
    def mode(self):
        try:
            return stats.mode(self._results)
        except:
            return None

    def run(self):
        for i in range(self._iterations):
            result = self._fnct_to_run()
            self._results.append(result)

        self.report()

    def report(self):
        max_num = max(self._results)
        min_num = min(self._results)
        mean = stats.mean(self._results)
        median = stats.median(self._results)
        mode = self.mode
        std_dev = stats.stdev(self._results)
        variance = stats.variance(self._results)
        print(
            f"""Number of Simulations: {self._iterations:,}
Max: {max_num}
Min: {min_num}
Mean: {mean}
Median: {median}
Mode: {mode}
Standard Deviation: {std_dev}
Variance: {variance}"""
        )


die = Die()
sim = SimulationNumeric(die.roll, 1000)
39, vì vậy chúng phải được chuyển thành đối số bắt buộc

Ghi chú. Bạn sẽ thấy khán giả thực sự mua vé như thế nào trong phần tiếp theo

Đó là nó. Bạn đã chọn một tài nguyên có giới hạn thời gian, xác định quy trình liên quan của nó và hệ thống hóa điều này trong định nghĩa lớp của bạn. Đối với hướng dẫn này, có thêm hai tài nguyên bạn sẽ cần khai báo

  1. Nhân viên kiểm tra vé
  2. Máy chủ để bán thực phẩm

Sau khi kiểm tra dữ liệu mà người quản lý gửi đến, bạn xác định rằng các máy chủ mất khoảng từ 1 đến 5 phút để hoàn thành một đơn đặt hàng. Ngoài ra, người mở cửa rất nhanh trong việc kiểm tra vé, với tốc độ trung bình là 3 giây

Bạn sẽ cần thêm các tài nguyên này vào lớp của mình và xác định các hàm tương ứng

Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
20 và
Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
21. Bạn có thể tìm ra mã sẽ trông như thế nào không?

mô phỏng. pyHiện/Ẩn

Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
1

Xem kỹ các tài nguyên và chức năng mới. Lưu ý cách chúng tuân theo cùng một định dạng như được mô tả ở trên.

Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
21 sử dụng
import statistics as stats


class SimulationNumeric:
    """Runs a function that returns a number n times and prints stats

    Args:
        fnct_to_run (function): The function to run
        iterations (integer): The number of times to run it"""

    def __init__(self, fnct_to_run, iterations):
        self._fnct_to_run = fnct_to_run
        self._iterations = iterations
        self._results = []
        self.run()

    @property
    def mode(self):
        try:
            return stats.mode(self._results)
        except:
            return None

    def run(self):
        for i in range(self._iterations):
            result = self._fnct_to_run()
            self._results.append(result)

        self.report()

    def report(self):
        max_num = max(self._results)
        min_num = min(self._results)
        mean = stats.mean(self._results)
        median = stats.median(self._results)
        mode = self.mode
        std_dev = stats.stdev(self._results)
        variance = stats.variance(self._results)
        print(
            f"""Number of Simulations: {self._iterations:,}
Max: {max_num}
Min: {min_num}
Mean: {mean}
Median: {median}
Mode: {mode}
Standard Deviation: {std_dev}
Variance: {variance}"""
        )


die = Die()
sim = SimulationNumeric(die.roll, 1000)
37 để tạo một số ngẫu nhiên trong khoảng thời gian từ 1 đến 5 phút, thể hiện thời gian một người xem phim đặt hàng và nhận đồ ăn của họ

Thời gian trễ của

Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
20 hơi khác một chút vì người mở cửa chỉ mất 3 giây. Vì
import simpy
import random
import statistics
8 hoạt động trong vài phút, nên giá trị này cần được chuyển dưới dạng một phần nhỏ của phút hoặc
Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
26

Loại bỏ các quảng cáo

Di chuyển qua môi trường. Định nghĩa hàm

Được rồi, bạn đã thiết lập môi trường bằng cách định nghĩa một lớp. Bạn có tài nguyên và quy trình. Bây giờ bạn cần một

import statistics as stats


class SimulationNumeric:
    """Runs a function that returns a number n times and prints stats

    Args:
        fnct_to_run (function): The function to run
        iterations (integer): The number of times to run it"""

    def __init__(self, fnct_to_run, iterations):
        self._fnct_to_run = fnct_to_run
        self._iterations = iterations
        self._results = []
        self.run()

    @property
    def mode(self):
        try:
            return stats.mode(self._results)
        except:
            return None

    def run(self):
        for i in range(self._iterations):
            result = self._fnct_to_run()
            self._results.append(result)

        self.report()

    def report(self):
        max_num = max(self._results)
        min_num = min(self._results)
        mean = stats.mean(self._results)
        median = stats.median(self._results)
        mode = self.mode
        std_dev = stats.stdev(self._results)
        variance = stats.variance(self._results)
        print(
            f"""Number of Simulations: {self._iterations:,}
Max: {max_num}
Min: {min_num}
Mean: {mean}
Median: {median}
Mode: {mode}
Standard Deviation: {std_dev}
Variance: {variance}"""
        )


die = Die()
sim = SimulationNumeric(die.roll, 1000)
39 để sử dụng chúng. Khi một
import statistics as stats


class SimulationNumeric:
    """Runs a function that returns a number n times and prints stats

    Args:
        fnct_to_run (function): The function to run
        iterations (integer): The number of times to run it"""

    def __init__(self, fnct_to_run, iterations):
        self._fnct_to_run = fnct_to_run
        self._iterations = iterations
        self._results = []
        self.run()

    @property
    def mode(self):
        try:
            return stats.mode(self._results)
        except:
            return None

    def run(self):
        for i in range(self._iterations):
            result = self._fnct_to_run()
            self._results.append(result)

        self.report()

    def report(self):
        max_num = max(self._results)
        min_num = min(self._results)
        mean = stats.mean(self._results)
        median = stats.median(self._results)
        mode = self.mode
        std_dev = stats.stdev(self._results)
        variance = stats.variance(self._results)
        print(
            f"""Number of Simulations: {self._iterations:,}
Max: {max_num}
Min: {min_num}
Mean: {mean}
Median: {median}
Mode: {mode}
Standard Deviation: {std_dev}
Variance: {variance}"""
        )


die = Die()
sim = SimulationNumeric(die.roll, 1000)
39 đến rạp chiếu phim, họ sẽ yêu cầu một tài nguyên, đợi quá trình của nó hoàn tất rồi rời đi. Bạn sẽ tạo một hàm, gọi là
Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
29, để theo dõi điều này

Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
40

Có ba đối số được truyền cho hàm này

  1. Number of Simulations: 1,000
    Max: 6
    Min: 1
    Mean: 3.522
    Median: 4.0
    Mode: 4
    Standard Deviation: 1.7018849586304041
    Variance: 2.8964124124124124
    22.
    import statistics as stats
    
    
    class SimulationNumeric:
        """Runs a function that returns a number n times and prints stats
    
        Args:
            fnct_to_run (function): The function to run
            iterations (integer): The number of times to run it"""
    
        def __init__(self, fnct_to_run, iterations):
            self._fnct_to_run = fnct_to_run
            self._iterations = iterations
            self._results = []
            self.run()
    
        @property
        def mode(self):
            try:
                return stats.mode(self._results)
            except:
                return None
    
        def run(self):
            for i in range(self._iterations):
                result = self._fnct_to_run()
                self._results.append(result)
    
            self.report()
    
        def report(self):
            max_num = max(self._results)
            min_num = min(self._results)
            mean = stats.mean(self._results)
            median = stats.median(self._results)
            mode = self.mode
            std_dev = stats.stdev(self._results)
            variance = stats.variance(self._results)
            print(
                f"""Number of Simulations: {self._iterations:,}
    Max: {max_num}
    Min: {min_num}
    Mean: {mean}
    Median: {median}
    Mode: {mode}
    Standard Deviation: {std_dev}
    Variance: {variance}"""
            )
    
    
    die = Die()
    sim = SimulationNumeric(die.roll, 1000)
    
    39 sẽ được kiểm soát bởi môi trường, vì vậy bạn sẽ chuyển điều này làm đối số đầu tiên
  2. import statistics as stats
    
    
    class SimulationNumeric:
        """Runs a function that returns a number n times and prints stats
    
        Args:
            fnct_to_run (function): The function to run
            iterations (integer): The number of times to run it"""
    
        def __init__(self, fnct_to_run, iterations):
            self._fnct_to_run = fnct_to_run
            self._iterations = iterations
            self._results = []
            self.run()
    
        @property
        def mode(self):
            try:
                return stats.mode(self._results)
            except:
                return None
    
        def run(self):
            for i in range(self._iterations):
                result = self._fnct_to_run()
                self._results.append(result)
    
            self.report()
    
        def report(self):
            max_num = max(self._results)
            min_num = min(self._results)
            mean = stats.mean(self._results)
            median = stats.median(self._results)
            mode = self.mode
            std_dev = stats.stdev(self._results)
            variance = stats.variance(self._results)
            print(
                f"""Number of Simulations: {self._iterations:,}
    Max: {max_num}
    Min: {min_num}
    Mean: {mean}
    Median: {median}
    Mode: {mode}
    Standard Deviation: {std_dev}
    Variance: {variance}"""
            )
    
    
    die = Die()
    sim = SimulationNumeric(die.roll, 1000)
    
    39. Biến này theo dõi từng người khi họ di chuyển qua hệ thống
  3. Number of Simulations: 1,000
    Max: 6
    Min: 1
    Mean: 3.522
    Median: 4.0
    Mode: 4
    Standard Deviation: 1.7018849586304041
    Variance: 2.8964124124124124
    63. Tham số này cung cấp cho bạn quyền truy cập vào các quy trình bạn đã xác định trong định nghĩa lớp tổng thể

Bạn cũng khai báo một biến

Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
64 để giữ thời gian mà mỗi
import statistics as stats


class SimulationNumeric:
    """Runs a function that returns a number n times and prints stats

    Args:
        fnct_to_run (function): The function to run
        iterations (integer): The number of times to run it"""

    def __init__(self, fnct_to_run, iterations):
        self._fnct_to_run = fnct_to_run
        self._iterations = iterations
        self._results = []
        self.run()

    @property
    def mode(self):
        try:
            return stats.mode(self._results)
        except:
            return None

    def run(self):
        for i in range(self._iterations):
            result = self._fnct_to_run()
            self._results.append(result)

        self.report()

    def report(self):
        max_num = max(self._results)
        min_num = min(self._results)
        mean = stats.mean(self._results)
        median = stats.median(self._results)
        mode = self.mode
        std_dev = stats.stdev(self._results)
        variance = stats.variance(self._results)
        print(
            f"""Number of Simulations: {self._iterations:,}
Max: {max_num}
Min: {min_num}
Mean: {mean}
Median: {median}
Mode: {mode}
Standard Deviation: {std_dev}
Variance: {variance}"""
        )


die = Die()
sim = SimulationNumeric(die.roll, 1000)
39 đến rạp hát. Bạn có thể nhận được thời gian này bằng cách sử dụng cuộc gọi
import simpy
import random
import statistics
8 tới
Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
67

Bạn sẽ muốn mỗi quy trình từ

Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
63 của mình có các yêu cầu tương ứng trong
Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
29. Ví dụ: quy trình đầu tiên trong lớp là
import statistics as stats


class SimulationNumeric:
    """Runs a function that returns a number n times and prints stats

    Args:
        fnct_to_run (function): The function to run
        iterations (integer): The number of times to run it"""

    def __init__(self, fnct_to_run, iterations):
        self._fnct_to_run = fnct_to_run
        self._iterations = iterations
        self._results = []
        self.run()

    @property
    def mode(self):
        try:
            return stats.mode(self._results)
        except:
            return None

    def run(self):
        for i in range(self._iterations):
            result = self._fnct_to_run()
            self._results.append(result)

        self.report()

    def report(self):
        max_num = max(self._results)
        min_num = min(self._results)
        mean = stats.mean(self._results)
        median = stats.median(self._results)
        mode = self.mode
        std_dev = stats.stdev(self._results)
        variance = stats.variance(self._results)
        print(
            f"""Number of Simulations: {self._iterations:,}
Max: {max_num}
Min: {min_num}
Mean: {mean}
Median: {median}
Mode: {mode}
Standard Deviation: {std_dev}
Variance: {variance}"""
        )


die = Die()
sim = SimulationNumeric(die.roll, 1000)
38, sử dụng tài nguyên
Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
11.
import statistics as stats


class SimulationNumeric:
    """Runs a function that returns a number n times and prints stats

    Args:
        fnct_to_run (function): The function to run
        iterations (integer): The number of times to run it"""

    def __init__(self, fnct_to_run, iterations):
        self._fnct_to_run = fnct_to_run
        self._iterations = iterations
        self._results = []
        self.run()

    @property
    def mode(self):
        try:
            return stats.mode(self._results)
        except:
            return None

    def run(self):
        for i in range(self._iterations):
            result = self._fnct_to_run()
            self._results.append(result)

        self.report()

    def report(self):
        max_num = max(self._results)
        min_num = min(self._results)
        mean = stats.mean(self._results)
        median = stats.median(self._results)
        mode = self.mode
        std_dev = stats.stdev(self._results)
        variance = stats.variance(self._results)
        print(
            f"""Number of Simulations: {self._iterations:,}
Max: {max_num}
Min: {min_num}
Mean: {mean}
Median: {median}
Mode: {mode}
Standard Deviation: {std_dev}
Variance: {variance}"""
        )


die = Die()
sim = SimulationNumeric(die.roll, 1000)
39 sẽ cần đưa ra yêu cầu đối với tài nguyên
Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
11 để giúp họ thông qua quy trình
import statistics as stats


class SimulationNumeric:
    """Runs a function that returns a number n times and prints stats

    Args:
        fnct_to_run (function): The function to run
        iterations (integer): The number of times to run it"""

    def __init__(self, fnct_to_run, iterations):
        self._fnct_to_run = fnct_to_run
        self._iterations = iterations
        self._results = []
        self.run()

    @property
    def mode(self):
        try:
            return stats.mode(self._results)
        except:
            return None

    def run(self):
        for i in range(self._iterations):
            result = self._fnct_to_run()
            self._results.append(result)

        self.report()

    def report(self):
        max_num = max(self._results)
        min_num = min(self._results)
        mean = stats.mean(self._results)
        median = stats.median(self._results)
        mode = self.mode
        std_dev = stats.stdev(self._results)
        variance = stats.variance(self._results)
        print(
            f"""Number of Simulations: {self._iterations:,}
Max: {max_num}
Min: {min_num}
Mean: {mean}
Median: {median}
Mode: {mode}
Standard Deviation: {std_dev}
Variance: {variance}"""
        )


die = Die()
sim = SimulationNumeric(die.roll, 1000)
38. Đây là một bảng để tóm tắt điều này

Xử lý trong

Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
63Yêu cầu trong
Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
29
import statistics as stats


class SimulationNumeric:
    """Runs a function that returns a number n times and prints stats

    Args:
        fnct_to_run (function): The function to run
        iterations (integer): The number of times to run it"""

    def __init__(self, fnct_to_run, iterations):
        self._fnct_to_run = fnct_to_run
        self._iterations = iterations
        self._results = []
        self.run()

    @property
    def mode(self):
        try:
            return stats.mode(self._results)
        except:
            return None

    def run(self):
        for i in range(self._iterations):
            result = self._fnct_to_run()
            self._results.append(result)

        self.report()

    def report(self):
        max_num = max(self._results)
        min_num = min(self._results)
        mean = stats.mean(self._results)
        median = stats.median(self._results)
        mode = self.mode
        std_dev = stats.stdev(self._results)
        variance = stats.variance(self._results)
        print(
            f"""Number of Simulations: {self._iterations:,}
Max: {max_num}
Min: {min_num}
Mean: {mean}
Median: {median}
Mode: {mode}
Standard Deviation: {std_dev}
Variance: {variance}"""
        )


die = Die()
sim = SimulationNumeric(die.roll, 1000)
38Yêu cầu một
Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
11
Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
20Yêu cầu một
Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
400
Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
21Yêu cầu một
Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
402

Thu ngân là một tài nguyên được chia sẻ, có nghĩa là nhiều khán giả sẽ sử dụng cùng một thu ngân. Tuy nhiên, nhân viên thu ngân chỉ có thể giúp một người xem phim tại một thời điểm, vì vậy bạn sẽ cần đưa một số hành vi chờ đợi vào mã của mình. Đây là cách nó hoạt động

Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
41

Đây là cách mã này hoạt động

  1. Number of Simulations: 1,000
    Max: 6
    Min: 1
    Mean: 3.522
    Median: 4.0
    Mode: 4
    Standard Deviation: 1.7018849586304041
    Variance: 2.8964124124124124
    403.
    import statistics as stats
    
    
    class SimulationNumeric:
        """Runs a function that returns a number n times and prints stats
    
        Args:
            fnct_to_run (function): The function to run
            iterations (integer): The number of times to run it"""
    
        def __init__(self, fnct_to_run, iterations):
            self._fnct_to_run = fnct_to_run
            self._iterations = iterations
            self._results = []
            self.run()
    
        @property
        def mode(self):
            try:
                return stats.mode(self._results)
            except:
                return None
    
        def run(self):
            for i in range(self._iterations):
                result = self._fnct_to_run()
                self._results.append(result)
    
            self.report()
    
        def report(self):
            max_num = max(self._results)
            min_num = min(self._results)
            mean = stats.mean(self._results)
            median = stats.median(self._results)
            mode = self.mode
            std_dev = stats.stdev(self._results)
            variance = stats.variance(self._results)
            print(
                f"""Number of Simulations: {self._iterations:,}
    Max: {max_num}
    Min: {min_num}
    Mean: {mean}
    Median: {median}
    Mode: {mode}
    Standard Deviation: {std_dev}
    Variance: {variance}"""
            )
    
    
    die = Die()
    sim = SimulationNumeric(die.roll, 1000)
    
    39 tạo yêu cầu sử dụng
    Number of Simulations: 1,000
    Max: 6
    Min: 1
    Mean: 3.522
    Median: 4.0
    Mode: 4
    Standard Deviation: 1.7018849586304041
    Variance: 2.8964124124124124
    11
  2. Number of Simulations: 1,000
    Max: 6
    Min: 1
    Mean: 3.522
    Median: 4.0
    Mode: 4
    Standard Deviation: 1.7018849586304041
    Variance: 2.8964124124124124
    406.
    import statistics as stats
    
    
    class SimulationNumeric:
        """Runs a function that returns a number n times and prints stats
    
        Args:
            fnct_to_run (function): The function to run
            iterations (integer): The number of times to run it"""
    
        def __init__(self, fnct_to_run, iterations):
            self._fnct_to_run = fnct_to_run
            self._iterations = iterations
            self._results = []
            self.run()
    
        @property
        def mode(self):
            try:
                return stats.mode(self._results)
            except:
                return None
    
        def run(self):
            for i in range(self._iterations):
                result = self._fnct_to_run()
                self._results.append(result)
    
            self.report()
    
        def report(self):
            max_num = max(self._results)
            min_num = min(self._results)
            mean = stats.mean(self._results)
            median = stats.median(self._results)
            mode = self.mode
            std_dev = stats.stdev(self._results)
            variance = stats.variance(self._results)
            print(
                f"""Number of Simulations: {self._iterations:,}
    Max: {max_num}
    Min: {min_num}
    Mean: {mean}
    Median: {median}
    Mode: {mode}
    Standard Deviation: {std_dev}
    Variance: {variance}"""
            )
    
    
    die = Die()
    sim = SimulationNumeric(die.roll, 1000)
    
    39 đợi một
    Number of Simulations: 1,000
    Max: 6
    Min: 1
    Mean: 3.522
    Median: 4.0
    Mode: 4
    Standard Deviation: 1.7018849586304041
    Variance: 2.8964124124124124
    11 trở nên khả dụng nếu tất cả hiện đang được sử dụng. Để tìm hiểu thêm về từ khóa
    Number of Simulations: 1,000
    Max: 6
    Min: 1
    Mean: 3.522
    Median: 4.0
    Mode: 4
    Standard Deviation: 1.7018849586304041
    Variance: 2.8964124124124124
    409, hãy xem Cách sử dụng Trình tạo và năng suất trong Python
  3. Number of Simulations: 1,000
    Max: 6
    Min: 1
    Mean: 3.522
    Median: 4.0
    Mode: 4
    Standard Deviation: 1.7018849586304041
    Variance: 2.8964124124124124
    410.
    import statistics as stats
    
    
    class SimulationNumeric:
        """Runs a function that returns a number n times and prints stats
    
        Args:
            fnct_to_run (function): The function to run
            iterations (integer): The number of times to run it"""
    
        def __init__(self, fnct_to_run, iterations):
            self._fnct_to_run = fnct_to_run
            self._iterations = iterations
            self._results = []
            self.run()
    
        @property
        def mode(self):
            try:
                return stats.mode(self._results)
            except:
                return None
    
        def run(self):
            for i in range(self._iterations):
                result = self._fnct_to_run()
                self._results.append(result)
    
            self.report()
    
        def report(self):
            max_num = max(self._results)
            min_num = min(self._results)
            mean = stats.mean(self._results)
            median = stats.median(self._results)
            mode = self.mode
            std_dev = stats.stdev(self._results)
            variance = stats.variance(self._results)
            print(
                f"""Number of Simulations: {self._iterations:,}
    Max: {max_num}
    Min: {min_num}
    Mean: {mean}
    Median: {median}
    Mode: {mode}
    Standard Deviation: {std_dev}
    Variance: {variance}"""
            )
    
    
    die = Die()
    sim = SimulationNumeric(die.roll, 1000)
    
    39 sử dụng một
    Number of Simulations: 1,000
    Max: 6
    Min: 1
    Mean: 3.522
    Median: 4.0
    Mode: 4
    Standard Deviation: 1.7018849586304041
    Variance: 2.8964124124124124
    11 có sẵn để hoàn thành quy trình đã cho. Trong trường hợp này, đó là mua vé bằng cách gọi tới số
    Number of Simulations: 1,000
    Max: 6
    Min: 1
    Mean: 3.522
    Median: 4.0
    Mode: 4
    Standard Deviation: 1.7018849586304041
    Variance: 2.8964124124124124
    413

Sau khi một tài nguyên được sử dụng, nó phải được giải phóng để tác nhân tiếp theo sử dụng. Bạn có thể làm điều này một cách rõ ràng với

Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
414, nhưng trong đoạn mã trên, bạn sử dụng câu lệnh
Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
415 để thay thế. Phím tắt này yêu cầu mô phỏng tự động giải phóng tài nguyên sau khi quá trình hoàn tất. Nói cách khác, sau khi vé được mua,
import statistics as stats


class SimulationNumeric:
    """Runs a function that returns a number n times and prints stats

    Args:
        fnct_to_run (function): The function to run
        iterations (integer): The number of times to run it"""

    def __init__(self, fnct_to_run, iterations):
        self._fnct_to_run = fnct_to_run
        self._iterations = iterations
        self._results = []
        self.run()

    @property
    def mode(self):
        try:
            return stats.mode(self._results)
        except:
            return None

    def run(self):
        for i in range(self._iterations):
            result = self._fnct_to_run()
            self._results.append(result)

        self.report()

    def report(self):
        max_num = max(self._results)
        min_num = min(self._results)
        mean = stats.mean(self._results)
        median = stats.median(self._results)
        mode = self.mode
        std_dev = stats.stdev(self._results)
        variance = stats.variance(self._results)
        print(
            f"""Number of Simulations: {self._iterations:,}
Max: {max_num}
Min: {min_num}
Mean: {mean}
Median: {median}
Mode: {mode}
Standard Deviation: {std_dev}
Variance: {variance}"""
        )


die = Die()
sim = SimulationNumeric(die.roll, 1000)
39 sẽ rời đi và nhân viên thu ngân sẽ tự động sẵn sàng đón khách hàng tiếp theo

Khi nhân viên thu ngân rảnh rỗi,

import statistics as stats


class SimulationNumeric:
    """Runs a function that returns a number n times and prints stats

    Args:
        fnct_to_run (function): The function to run
        iterations (integer): The number of times to run it"""

    def __init__(self, fnct_to_run, iterations):
        self._fnct_to_run = fnct_to_run
        self._iterations = iterations
        self._results = []
        self.run()

    @property
    def mode(self):
        try:
            return stats.mode(self._results)
        except:
            return None

    def run(self):
        for i in range(self._iterations):
            result = self._fnct_to_run()
            self._results.append(result)

        self.report()

    def report(self):
        max_num = max(self._results)
        min_num = min(self._results)
        mean = stats.mean(self._results)
        median = stats.median(self._results)
        mode = self.mode
        std_dev = stats.stdev(self._results)
        variance = stats.variance(self._results)
        print(
            f"""Number of Simulations: {self._iterations:,}
Max: {max_num}
Min: {min_num}
Mean: {mean}
Median: {median}
Mode: {mode}
Standard Deviation: {std_dev}
Variance: {variance}"""
        )


die = Die()
sim = SimulationNumeric(die.roll, 1000)
39 sẽ dành thời gian mua vé của họ.
Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
418 yêu cầu mô phỏng chuyển đến phiên bản
Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
419 và chạy quy trình
import statistics as stats


class SimulationNumeric:
    """Runs a function that returns a number n times and prints stats

    Args:
        fnct_to_run (function): The function to run
        iterations (integer): The number of times to run it"""

    def __init__(self, fnct_to_run, iterations):
        self._fnct_to_run = fnct_to_run
        self._iterations = iterations
        self._results = []
        self.run()

    @property
    def mode(self):
        try:
            return stats.mode(self._results)
        except:
            return None

    def run(self):
        for i in range(self._iterations):
            result = self._fnct_to_run()
            self._results.append(result)

        self.report()

    def report(self):
        max_num = max(self._results)
        min_num = min(self._results)
        mean = stats.mean(self._results)
        median = stats.median(self._results)
        mode = self.mode
        std_dev = stats.stdev(self._results)
        variance = stats.variance(self._results)
        print(
            f"""Number of Simulations: {self._iterations:,}
Max: {max_num}
Min: {min_num}
Mean: {mean}
Median: {median}
Mode: {mode}
Standard Deviation: {std_dev}
Variance: {variance}"""
        )


die = Die()
sim = SimulationNumeric(die.roll, 1000)
38 trên
import statistics as stats


class SimulationNumeric:
    """Runs a function that returns a number n times and prints stats

    Args:
        fnct_to_run (function): The function to run
        iterations (integer): The number of times to run it"""

    def __init__(self, fnct_to_run, iterations):
        self._fnct_to_run = fnct_to_run
        self._iterations = iterations
        self._results = []
        self.run()

    @property
    def mode(self):
        try:
            return stats.mode(self._results)
        except:
            return None

    def run(self):
        for i in range(self._iterations):
            result = self._fnct_to_run()
            self._results.append(result)

        self.report()

    def report(self):
        max_num = max(self._results)
        min_num = min(self._results)
        mean = stats.mean(self._results)
        median = stats.median(self._results)
        mode = self.mode
        std_dev = stats.stdev(self._results)
        variance = stats.variance(self._results)
        print(
            f"""Number of Simulations: {self._iterations:,}
Max: {max_num}
Min: {min_num}
Mean: {mean}
Median: {median}
Mode: {mode}
Standard Deviation: {std_dev}
Variance: {variance}"""
        )


die = Die()
sim = SimulationNumeric(die.roll, 1000)
39 này.
import statistics as stats


class SimulationNumeric:
    """Runs a function that returns a number n times and prints stats

    Args:
        fnct_to_run (function): The function to run
        iterations (integer): The number of times to run it"""

    def __init__(self, fnct_to_run, iterations):
        self._fnct_to_run = fnct_to_run
        self._iterations = iterations
        self._results = []
        self.run()

    @property
    def mode(self):
        try:
            return stats.mode(self._results)
        except:
            return None

    def run(self):
        for i in range(self._iterations):
            result = self._fnct_to_run()
            self._results.append(result)

        self.report()

    def report(self):
        max_num = max(self._results)
        min_num = min(self._results)
        mean = stats.mean(self._results)
        median = stats.median(self._results)
        mode = self.mode
        std_dev = stats.stdev(self._results)
        variance = stats.variance(self._results)
        print(
            f"""Number of Simulations: {self._iterations:,}
Max: {max_num}
Min: {min_num}
Mean: {mean}
Median: {median}
Mode: {mode}
Standard Deviation: {std_dev}
Variance: {variance}"""
        )


die = Die()
sim = SimulationNumeric(die.roll, 1000)
39 sẽ lặp lại yêu cầu này, sử dụng, chu kỳ phát hành để kiểm tra vé của họ

Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
42

Ở đây, cấu trúc cho mã là như nhau

Sau đó, có một bước tùy chọn là mua thực phẩm từ quầy giảm giá. Bạn không thể biết liệu một người xem phim có muốn mua đồ ăn nhẹ và đồ uống hay không. Một cách để đối phó với sự không chắc chắn này là đưa một chút tính ngẫu nhiên vào hàm

Mỗi

import statistics as stats


class SimulationNumeric:
    """Runs a function that returns a number n times and prints stats

    Args:
        fnct_to_run (function): The function to run
        iterations (integer): The number of times to run it"""

    def __init__(self, fnct_to_run, iterations):
        self._fnct_to_run = fnct_to_run
        self._iterations = iterations
        self._results = []
        self.run()

    @property
    def mode(self):
        try:
            return stats.mode(self._results)
        except:
            return None

    def run(self):
        for i in range(self._iterations):
            result = self._fnct_to_run()
            self._results.append(result)

        self.report()

    def report(self):
        max_num = max(self._results)
        min_num = min(self._results)
        mean = stats.mean(self._results)
        median = stats.median(self._results)
        mode = self.mode
        std_dev = stats.stdev(self._results)
        variance = stats.variance(self._results)
        print(
            f"""Number of Simulations: {self._iterations:,}
Max: {max_num}
Min: {min_num}
Mean: {mean}
Median: {median}
Mode: {mode}
Standard Deviation: {std_dev}
Variance: {variance}"""
        )


die = Die()
sim = SimulationNumeric(die.roll, 1000)
39 sẽ hoặc sẽ không muốn mua thực phẩm mà bạn có thể lưu trữ dưới dạng các giá trị Boolean
Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
424 hoặc
Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
425. Sau đó, sử dụng mô-đun
Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
34 để mô phỏng quyết định ngẫu nhiên liệu
import statistics as stats


class SimulationNumeric:
    """Runs a function that returns a number n times and prints stats

    Args:
        fnct_to_run (function): The function to run
        iterations (integer): The number of times to run it"""

    def __init__(self, fnct_to_run, iterations):
        self._fnct_to_run = fnct_to_run
        self._iterations = iterations
        self._results = []
        self.run()

    @property
    def mode(self):
        try:
            return stats.mode(self._results)
        except:
            return None

    def run(self):
        for i in range(self._iterations):
            result = self._fnct_to_run()
            self._results.append(result)

        self.report()

    def report(self):
        max_num = max(self._results)
        min_num = min(self._results)
        mean = stats.mean(self._results)
        median = stats.median(self._results)
        mode = self.mode
        std_dev = stats.stdev(self._results)
        variance = stats.variance(self._results)
        print(
            f"""Number of Simulations: {self._iterations:,}
Max: {max_num}
Min: {min_num}
Mean: {mean}
Median: {median}
Mode: {mode}
Standard Deviation: {std_dev}
Variance: {variance}"""
        )


die = Die()
sim = SimulationNumeric(die.roll, 1000)
39 cụ thể này có tiếp tục đứng ở vị trí nhượng quyền hay không

Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
43

Câu lệnh điều kiện này sẽ trả về một trong hai kết quả

  1. Number of Simulations: 1,000
    Max: 6
    Min: 1
    Mean: 3.522
    Median: 4.0
    Mode: 4
    Standard Deviation: 1.7018849586304041
    Variance: 2.8964124124124124
    424.
    import statistics as stats
    
    
    class SimulationNumeric:
        """Runs a function that returns a number n times and prints stats
    
        Args:
            fnct_to_run (function): The function to run
            iterations (integer): The number of times to run it"""
    
        def __init__(self, fnct_to_run, iterations):
            self._fnct_to_run = fnct_to_run
            self._iterations = iterations
            self._results = []
            self.run()
    
        @property
        def mode(self):
            try:
                return stats.mode(self._results)
            except:
                return None
    
        def run(self):
            for i in range(self._iterations):
                result = self._fnct_to_run()
                self._results.append(result)
    
            self.report()
    
        def report(self):
            max_num = max(self._results)
            min_num = min(self._results)
            mean = stats.mean(self._results)
            median = stats.median(self._results)
            mode = self.mode
            std_dev = stats.stdev(self._results)
            variance = stats.variance(self._results)
            print(
                f"""Number of Simulations: {self._iterations:,}
    Max: {max_num}
    Min: {min_num}
    Mean: {mean}
    Median: {median}
    Mode: {mode}
    Standard Deviation: {std_dev}
    Variance: {variance}"""
            )
    
    
    die = Die()
    sim = SimulationNumeric(die.roll, 1000)
    
    39 sẽ yêu cầu người phục vụ và gọi đồ ăn
  2. Number of Simulations: 1,000
    Max: 6
    Min: 1
    Mean: 3.522
    Median: 4.0
    Mode: 4
    Standard Deviation: 1.7018849586304041
    Variance: 2.8964124124124124
    425. Thay vào đó,
    import statistics as stats
    
    
    class SimulationNumeric:
        """Runs a function that returns a number n times and prints stats
    
        Args:
            fnct_to_run (function): The function to run
            iterations (integer): The number of times to run it"""
    
        def __init__(self, fnct_to_run, iterations):
            self._fnct_to_run = fnct_to_run
            self._iterations = iterations
            self._results = []
            self.run()
    
        @property
        def mode(self):
            try:
                return stats.mode(self._results)
            except:
                return None
    
        def run(self):
            for i in range(self._iterations):
                result = self._fnct_to_run()
                self._results.append(result)
    
            self.report()
    
        def report(self):
            max_num = max(self._results)
            min_num = min(self._results)
            mean = stats.mean(self._results)
            median = stats.median(self._results)
            mode = self.mode
            std_dev = stats.stdev(self._results)
            variance = stats.variance(self._results)
            print(
                f"""Number of Simulations: {self._iterations:,}
    Max: {max_num}
    Min: {min_num}
    Mean: {mean}
    Median: {median}
    Mode: {mode}
    Standard Deviation: {std_dev}
    Variance: {variance}"""
            )
    
    
    die = Die()
    sim = SimulationNumeric(die.roll, 1000)
    
    39 sẽ đi tìm chỗ ngồi của họ mà không mua bất kỳ đồ ăn nhẹ nào

Bây giờ, hãy nhớ rằng mục tiêu của mô phỏng này là xác định số lượng nhân viên thu ngân, người phục vụ và người phục vụ nên có trong đội ngũ nhân viên để giữ thời gian chờ dưới 10 phút. Để làm được điều này, bạn cần biết một số

import statistics as stats


class SimulationNumeric:
    """Runs a function that returns a number n times and prints stats

    Args:
        fnct_to_run (function): The function to run
        iterations (integer): The number of times to run it"""

    def __init__(self, fnct_to_run, iterations):
        self._fnct_to_run = fnct_to_run
        self._iterations = iterations
        self._results = []
        self.run()

    @property
    def mode(self):
        try:
            return stats.mode(self._results)
        except:
            return None

    def run(self):
        for i in range(self._iterations):
            result = self._fnct_to_run()
            self._results.append(result)

        self.report()

    def report(self):
        max_num = max(self._results)
        min_num = min(self._results)
        mean = stats.mean(self._results)
        median = stats.median(self._results)
        mode = self.mode
        std_dev = stats.stdev(self._results)
        variance = stats.variance(self._results)
        print(
            f"""Number of Simulations: {self._iterations:,}
Max: {max_num}
Min: {min_num}
Mean: {mean}
Median: {median}
Mode: {mode}
Standard Deviation: {std_dev}
Variance: {variance}"""
        )


die = Die()
sim = SimulationNumeric(die.roll, 1000)
39 nhất định đã mất bao lâu để đến được chỗ ngồi của họ. Bạn sử dụng
Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
67 ở đầu chức năng để theo dõi
Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
64 và một lần nữa ở cuối khi mỗi
import statistics as stats


class SimulationNumeric:
    """Runs a function that returns a number n times and prints stats

    Args:
        fnct_to_run (function): The function to run
        iterations (integer): The number of times to run it"""

    def __init__(self, fnct_to_run, iterations):
        self._fnct_to_run = fnct_to_run
        self._iterations = iterations
        self._results = []
        self.run()

    @property
    def mode(self):
        try:
            return stats.mode(self._results)
        except:
            return None

    def run(self):
        for i in range(self._iterations):
            result = self._fnct_to_run()
            self._results.append(result)

        self.report()

    def report(self):
        max_num = max(self._results)
        min_num = min(self._results)
        mean = stats.mean(self._results)
        median = stats.median(self._results)
        mode = self.mode
        std_dev = stats.stdev(self._results)
        variance = stats.variance(self._results)
        print(
            f"""Number of Simulations: {self._iterations:,}
Max: {max_num}
Min: {min_num}
Mean: {mean}
Median: {median}
Mode: {mode}
Standard Deviation: {std_dev}
Variance: {variance}"""
        )


die = Die()
sim = SimulationNumeric(die.roll, 1000)
39 hoàn thành tất cả các quy trình và đi vào rạp chiếu phim

Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
44

Bạn sử dụng

Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
67 để biết thời gian mà
import statistics as stats


class SimulationNumeric:
    """Runs a function that returns a number n times and prints stats

    Args:
        fnct_to_run (function): The function to run
        iterations (integer): The number of times to run it"""

    def __init__(self, fnct_to_run, iterations):
        self._fnct_to_run = fnct_to_run
        self._iterations = iterations
        self._results = []
        self.run()

    @property
    def mode(self):
        try:
            return stats.mode(self._results)
        except:
            return None

    def run(self):
        for i in range(self._iterations):
            result = self._fnct_to_run()
            self._results.append(result)

        self.report()

    def report(self):
        max_num = max(self._results)
        min_num = min(self._results)
        mean = stats.mean(self._results)
        median = stats.median(self._results)
        mode = self.mode
        std_dev = stats.stdev(self._results)
        variance = stats.variance(self._results)
        print(
            f"""Number of Simulations: {self._iterations:,}
Max: {max_num}
Min: {min_num}
Mean: {mean}
Median: {median}
Mode: {mode}
Standard Deviation: {std_dev}
Variance: {variance}"""
        )


die = Die()
sim = SimulationNumeric(die.roll, 1000)
39 đã hoàn thành tất cả các quy trình và đến chỗ ngồi của họ. Bạn trừ đi
Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
64 của người xem phim từ thời gian khởi hành này và thêm chênh lệch múi giờ vào danh sách chờ của bạn,
Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
439

Ghi chú. Bạn có thể lưu trữ thời gian khởi hành trong một biến riêng biệt như

Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
440, nhưng điều này sẽ làm cho mã của bạn rất lặp lại, điều này vi phạm D. R. Y. nguyên tắc

import statistics as stats


class SimulationNumeric:
    """Runs a function that returns a number n times and prints stats

    Args:
        fnct_to_run (function): The function to run
        iterations (integer): The number of times to run it"""

    def __init__(self, fnct_to_run, iterations):
        self._fnct_to_run = fnct_to_run
        self._iterations = iterations
        self._results = []
        self.run()

    @property
    def mode(self):
        try:
            return stats.mode(self._results)
        except:
            return None

    def run(self):
        for i in range(self._iterations):
            result = self._fnct_to_run()
            self._results.append(result)

        self.report()

    def report(self):
        max_num = max(self._results)
        min_num = min(self._results)
        mean = stats.mean(self._results)
        median = stats.median(self._results)
        mode = self.mode
        std_dev = stats.stdev(self._results)
        variance = stats.variance(self._results)
        print(
            f"""Number of Simulations: {self._iterations:,}
Max: {max_num}
Min: {min_num}
Mean: {mean}
Median: {median}
Mode: {mode}
Standard Deviation: {std_dev}
Variance: {variance}"""
        )


die = Die()
sim = SimulationNumeric(die.roll, 1000)
39 này đã sẵn sàng để xem một số bản xem trước

Loại bỏ các quảng cáo

Làm cho mọi việc xảy ra. Định nghĩa hàm

Bây giờ bạn sẽ cần xác định một chức năng để chạy mô phỏng.

Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
442 sẽ chịu trách nhiệm tạo phiên bản rạp chiếu phim và tạo người xem phim cho đến khi quá trình mô phỏng dừng lại. Điều đầu tiên chức năng này nên làm là tạo một thể hiện của rạp hát

Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
45

Vì đây là quá trình chính, bạn sẽ cần phải vượt qua tất cả các ẩn số mà bạn đã khai báo cho đến nay

  • Number of Simulations: 1,000
    Max: 6
    Min: 1
    Mean: 3.522
    Median: 4.0
    Mode: 4
    Standard Deviation: 1.7018849586304041
    Variance: 2.8964124124124124
    46
  • Number of Simulations: 1,000
    Max: 6
    Min: 1
    Mean: 3.522
    Median: 4.0
    Mode: 4
    Standard Deviation: 1.7018849586304041
    Variance: 2.8964124124124124
    444
  • Number of Simulations: 1,000
    Max: 6
    Min: 1
    Mean: 3.522
    Median: 4.0
    Mode: 4
    Standard Deviation: 1.7018849586304041
    Variance: 2.8964124124124124
    445

Đây là tất cả các biến mà mô phỏng cần để tạo và kiểm soát môi trường, do đó, điều tối quan trọng là phải vượt qua tất cả. Sau đó, bạn xác định một biến

Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
63 và yêu cầu mô phỏng thiết lập rạp hát với một số nhân viên thu ngân, người phục vụ và người hướng dẫn nhất định

Bạn cũng có thể muốn bắt đầu mô phỏng của mình với một vài khán giả đang đợi ở rạp chiếu phim. Có lẽ sẽ có một vài người sẵn sàng đi ngay khi cánh cửa mở ra. Người quản lý nói rằng sẽ có khoảng 3 khán giả xếp hàng sẵn sàng mua vé ngay khi phòng vé mở cửa. Bạn có thể yêu cầu mô phỏng tiếp tục và di chuyển qua nhóm ban đầu này như vậy

Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
46

Bạn sử dụng

Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
447 để đưa 3 khán giả vào rạp. Sau đó, bạn sử dụng
Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
418 để báo cho mô phỏng chuẩn bị di chuyển chúng qua rạp hát. Những khán giả còn lại sẽ đến rạp vào thời gian riêng của họ. Vì vậy, chức năng sẽ tiếp tục đưa khách hàng mới vào rạp chiếu phim miễn là mô phỏng đang chạy

Bạn không biết sẽ mất bao lâu để khán giả mới đến rạp, vì vậy bạn quyết định xem xét dữ liệu trong quá khứ. Sử dụng biên lai được đánh dấu thời gian từ phòng vé, bạn biết rằng khán giả xem phim có xu hướng đến rạp trung bình cứ sau 12 giây. Bây giờ tất cả những gì bạn phải làm là yêu cầu chức năng đợi lâu như vậy trước khi tạo một người mới

Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
47

Lưu ý rằng bạn sử dụng số thập phân

Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
449 để biểu thị 12 giây. Để có được con số này, bạn chỉ cần chia 12 giây cho 60 giây, là số giây trong một phút

Sau khi chờ đợi, hàm sẽ tăng

import statistics as stats


class SimulationNumeric:
    """Runs a function that returns a number n times and prints stats

    Args:
        fnct_to_run (function): The function to run
        iterations (integer): The number of times to run it"""

    def __init__(self, fnct_to_run, iterations):
        self._fnct_to_run = fnct_to_run
        self._iterations = iterations
        self._results = []
        self.run()

    @property
    def mode(self):
        try:
            return stats.mode(self._results)
        except:
            return None

    def run(self):
        for i in range(self._iterations):
            result = self._fnct_to_run()
            self._results.append(result)

        self.report()

    def report(self):
        max_num = max(self._results)
        min_num = min(self._results)
        mean = stats.mean(self._results)
        median = stats.median(self._results)
        mode = self.mode
        std_dev = stats.stdev(self._results)
        variance = stats.variance(self._results)
        print(
            f"""Number of Simulations: {self._iterations:,}
Max: {max_num}
Min: {min_num}
Mean: {mean}
Median: {median}
Mode: {mode}
Standard Deviation: {std_dev}
Variance: {variance}"""
        )


die = Die()
sim = SimulationNumeric(die.roll, 1000)
39 lên 1 và tạo người tiếp theo. Chức năng tạo giống như chức năng bạn đã sử dụng để khởi tạo 3 người xem phim đầu tiên

Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
48

Đó là nó. Khi bạn gọi chức năng này, mô phỏng sẽ tạo ra 3 người xem phim bắt đầu và bắt đầu di chuyển họ qua rạp chiếu phim với

Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
29. Sau đó, khán giả mới sẽ đến rạp cách nhau 12 giây và di chuyển qua rạp theo thời gian của họ.

Tính toán thời gian chờ đợi. Định nghĩa hàm

Tại thời điểm này, bạn nên có một danh sách

Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
439 chứa tổng thời gian mỗi khán giả đi xem phim để đến chỗ ngồi của họ. Bây giờ, bạn sẽ muốn xác định một hàm để giúp tính toán thời gian trung bình mà một
import statistics as stats


class SimulationNumeric:
    """Runs a function that returns a number n times and prints stats

    Args:
        fnct_to_run (function): The function to run
        iterations (integer): The number of times to run it"""

    def __init__(self, fnct_to_run, iterations):
        self._fnct_to_run = fnct_to_run
        self._iterations = iterations
        self._results = []
        self.run()

    @property
    def mode(self):
        try:
            return stats.mode(self._results)
        except:
            return None

    def run(self):
        for i in range(self._iterations):
            result = self._fnct_to_run()
            self._results.append(result)

        self.report()

    def report(self):
        max_num = max(self._results)
        min_num = min(self._results)
        mean = stats.mean(self._results)
        median = stats.median(self._results)
        mode = self.mode
        std_dev = stats.stdev(self._results)
        variance = stats.variance(self._results)
        print(
            f"""Number of Simulations: {self._iterations:,}
Max: {max_num}
Min: {min_num}
Mean: {mean}
Median: {median}
Mode: {mode}
Standard Deviation: {std_dev}
Variance: {variance}"""
        )


die = Die()
sim = SimulationNumeric(die.roll, 1000)
39 sử dụng từ khi họ đến cho đến khi họ kiểm tra xong vé của mình.
Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
454 chỉ làm điều này

Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
49

Hàm này lấy danh sách

Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
439 của bạn làm đối số và sử dụng
Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
456 để tính thời gian chờ trung bình

Vì bạn đang tạo một tập lệnh sẽ được sử dụng bởi người quản lý rạp chiếu phim, nên bạn sẽ muốn đảm bảo rằng người dùng có thể đọc được đầu ra một cách dễ dàng. Bạn có thể thêm một chức năng gọi là

Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
457 để làm điều này

import simpy
import random
import statistics
0

Phần cuối của hàm sử dụng

Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
458 để trả về kết quả theo phút giây nên người quản lý dễ dàng hiểu được kết quả của chương trình

Loại bỏ các quảng cáo

Lựa chọn thông số. Định nghĩa chức năng nhập của người dùng

Khi bạn xây dựng các hàm này, bạn đã gặp phải một số biến số chưa được xác định rõ ràng

  • Number of Simulations: 1,000
    Max: 6
    Min: 1
    Mean: 3.522
    Median: 4.0
    Mode: 4
    Standard Deviation: 1.7018849586304041
    Variance: 2.8964124124124124
    46
  • Number of Simulations: 1,000
    Max: 6
    Min: 1
    Mean: 3.522
    Median: 4.0
    Mode: 4
    Standard Deviation: 1.7018849586304041
    Variance: 2.8964124124124124
    444
  • Number of Simulations: 1,000
    Max: 6
    Min: 1
    Mean: 3.522
    Median: 4.0
    Mode: 4
    Standard Deviation: 1.7018849586304041
    Variance: 2.8964124124124124
    445

Các biến này là các tham số mà bạn có thể thay đổi để xem mô phỏng thay đổi như thế nào. Nếu một bộ phim bom tấn có khách hàng xếp hàng quanh khu nhà, thì nên có bao nhiêu nhân viên thu ngân làm việc?

Ghi chú. Đó là vẻ đẹp của mô phỏng. Nó cho phép bạn thử những điều này để bạn có thể đưa ra quyết định tốt nhất có thể trong cuộc sống thực

Bất kỳ ai đang sử dụng mô phỏng của bạn đều cần có khả năng thay đổi giá trị của các tham số này để thử các kịch bản khác nhau. Cuối cùng, bạn sẽ tạo một hàm trợ giúp để nhận các giá trị này từ người dùng

import simpy
import random
import statistics
1

Hàm này chỉ đơn giản gọi hàm

Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
463 của Python để lấy dữ liệu từ người dùng. Vì đầu vào của người dùng có nguy cơ bị lộn xộn, nên bạn có thể bao gồm mệnh đề
Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
464 để phát hiện bất kỳ điều gì không hợp lệ. Nếu người dùng nhập dữ liệu sai, thì mô phỏng sẽ chạy với các giá trị mặc định

Hoàn thiện thiết lập. Định nghĩa chức năng chính

Chức năng cuối cùng bạn muốn tạo là

Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
465. Điều này sẽ đảm bảo tập lệnh của bạn chạy theo đúng thứ tự khi bạn thực thi nó trên dòng lệnh. Bạn có thể đọc thêm về
Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
465 trong Xác định hàm chính trong Python. Đây là giao diện của
Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
465 của bạn

import simpy
import random
import statistics
2

Đây là cách hoạt động của

Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
465

  1. Thiết lập môi trường của bạn bằng cách khai báo một hạt giống ngẫu nhiên. Điều này đảm bảo đầu ra của bạn sẽ giống như những gì bạn thấy trong hướng dẫn này
  2. Truy vấn người dùng chương trình của bạn cho một số đầu vào
  3. Tạo môi trường và lưu nó dưới dạng biến
    Number of Simulations: 1,000
    Max: 6
    Min: 1
    Mean: 3.522
    Median: 4.0
    Mode: 4
    Standard Deviation: 1.7018849586304041
    Variance: 2.8964124124124124
    22, sẽ di chuyển mô phỏng qua từng bước thời gian
  4. Yêu cầu
    import simpy
    import random
    import statistics
    
    8 chạy quy trình
    Number of Simulations: 1,000
    Max: 6
    Min: 1
    Mean: 3.522
    Median: 4.0
    Mode: 4
    Standard Deviation: 1.7018849586304041
    Variance: 2.8964124124124124
    442, quy trình này tạo ra môi trường rạp chiếu phim và khiến khán giả di chuyển qua đó
  5. Xác định thời gian bạn muốn mô phỏng chạy. Là một giá trị mặc định, mô phỏng được thiết lập để chạy trong 90 phút
  6. Lưu trữ đầu ra của
    Number of Simulations: 1,000
    Max: 6
    Min: 1
    Mean: 3.522
    Median: 4.0
    Mode: 4
    Standard Deviation: 1.7018849586304041
    Variance: 2.8964124124124124
    454 trong hai biến,
    Number of Simulations: 1,000
    Max: 6
    Min: 1
    Mean: 3.522
    Median: 4.0
    Mode: 4
    Standard Deviation: 1.7018849586304041
    Variance: 2.8964124124124124
    473 và
    Number of Simulations: 1,000
    Max: 6
    Min: 1
    Mean: 3.522
    Median: 4.0
    Mode: 4
    Standard Deviation: 1.7018849586304041
    Variance: 2.8964124124124124
    474
  7. Sử dụng
    Number of Simulations: 1,000
    Max: 6
    Min: 1
    Mean: 3.522
    Median: 4.0
    Mode: 4
    Standard Deviation: 1.7018849586304041
    Variance: 2.8964124124124124
    475 để hiển thị kết quả cho người dùng

Với điều này, thiết lập đã hoàn tất

Cách chạy mô phỏng

Chỉ với một vài dòng mã nữa, bạn sẽ có thể xem mô phỏng của mình trở nên sống động. Nhưng trước tiên, đây là tổng quan về các hàm và lớp mà bạn đã định nghĩa cho đến nay

  • Number of Simulations: 1,000
    Max: 6
    Min: 1
    Mean: 3.522
    Median: 4.0
    Mode: 4
    Standard Deviation: 1.7018849586304041
    Variance: 2.8964124124124124
    419. Định nghĩa lớp này phục vụ như một kế hoạch chi tiết cho môi trường mà bạn muốn mô phỏng. Nó xác định một số thông tin về môi trường đó, chẳng hạn như loại tài nguyên nào có sẵn và quy trình nào được liên kết với chúng

  • Number of Simulations: 1,000
    Max: 6
    Min: 1
    Mean: 3.522
    Median: 4.0
    Mode: 4
    Standard Deviation: 1.7018849586304041
    Variance: 2.8964124124124124
    29. Chức năng này đưa ra các yêu cầu rõ ràng để sử dụng tài nguyên, thực hiện quy trình liên quan và sau đó phát hành tài nguyên đó cho người xem phim tiếp theo

  • Number of Simulations: 1,000
    Max: 6
    Min: 1
    Mean: 3.522
    Median: 4.0
    Mode: 4
    Standard Deviation: 1.7018849586304041
    Variance: 2.8964124124124124
    442. Chức năng này điều khiển mô phỏng. Nó sử dụng bản thiết kế lớp
    Number of Simulations: 1,000
    Max: 6
    Min: 1
    Mean: 3.522
    Median: 4.0
    Mode: 4
    Standard Deviation: 1.7018849586304041
    Variance: 2.8964124124124124
    419 để tạo một thể hiện của rạp hát, sau đó gọi
    Number of Simulations: 1,000
    Max: 6
    Min: 1
    Mean: 3.522
    Median: 4.0
    Mode: 4
    Standard Deviation: 1.7018849586304041
    Variance: 2.8964124124124124
    29 để tạo và di chuyển mọi người qua rạp hát

  • Number of Simulations: 1,000
    Max: 6
    Min: 1
    Mean: 3.522
    Median: 4.0
    Mode: 4
    Standard Deviation: 1.7018849586304041
    Variance: 2.8964124124124124
    454. Hàm này tìm thời gian trung bình để một
    import statistics as stats
    
    
    class SimulationNumeric:
        """Runs a function that returns a number n times and prints stats
    
        Args:
            fnct_to_run (function): The function to run
            iterations (integer): The number of times to run it"""
    
        def __init__(self, fnct_to_run, iterations):
            self._fnct_to_run = fnct_to_run
            self._iterations = iterations
            self._results = []
            self.run()
    
        @property
        def mode(self):
            try:
                return stats.mode(self._results)
            except:
                return None
    
        def run(self):
            for i in range(self._iterations):
                result = self._fnct_to_run()
                self._results.append(result)
    
            self.report()
    
        def report(self):
            max_num = max(self._results)
            min_num = min(self._results)
            mean = stats.mean(self._results)
            median = stats.median(self._results)
            mode = self.mode
            std_dev = stats.stdev(self._results)
            variance = stats.variance(self._results)
            print(
                f"""Number of Simulations: {self._iterations:,}
    Max: {max_num}
    Min: {min_num}
    Mean: {mean}
    Median: {median}
    Mode: {mode}
    Standard Deviation: {std_dev}
    Variance: {variance}"""
            )
    
    
    die = Die()
    sim = SimulationNumeric(die.roll, 1000)
    
    39 đi hết rạp

  • Number of Simulations: 1,000
    Max: 6
    Min: 1
    Mean: 3.522
    Median: 4.0
    Mode: 4
    Standard Deviation: 1.7018849586304041
    Variance: 2.8964124124124124
    457. Chức năng này đảm bảo đầu ra cuối cùng dễ đọc cho người dùng

  • Number of Simulations: 1,000
    Max: 6
    Min: 1
    Mean: 3.522
    Median: 4.0
    Mode: 4
    Standard Deviation: 1.7018849586304041
    Variance: 2.8964124124124124
    484. Chức năng này cho phép người dùng xác định một số thông số, chẳng hạn như có bao nhiêu nhân viên thu ngân

  • Number of Simulations: 1,000
    Max: 6
    Min: 1
    Mean: 3.522
    Median: 4.0
    Mode: 4
    Standard Deviation: 1.7018849586304041
    Variance: 2.8964124124124124
    465. Chức năng này đảm bảo rằng tập lệnh của bạn chạy đúng trong dòng lệnh

Bây giờ, bạn chỉ cần thêm hai dòng mã để gọi chức năng chính của mình

import simpy
import random
import statistics
3

Cùng với đó, tập lệnh của bạn đã sẵn sàng để chạy. Mở thiết bị đầu cuối của bạn, điều hướng đến nơi bạn đã lưu trữ

Number of Simulations: 1,000
Max: 6
Min: 1
Mean: 3.522
Median: 4.0
Mode: 4
Standard Deviation: 1.7018849586304041
Variance: 2.8964124124124124
36 và chạy lệnh sau

import simpy
import random
import statistics
4

Bạn sẽ được nhắc chọn các tham số bạn muốn cho mô phỏng của mình. Đây là kết quả đầu ra trông như thế nào với các tham số mặc định

import simpy
import random
import statistics
5

Ái chà. Đó là một thời gian dài để chờ đợi xung quanh

Loại bỏ các quảng cáo

Khi nào cần thay đổi mọi thứ

Hãy nhớ rằng, mục tiêu của bạn là tiếp cận người quản lý với giải pháp về số lượng nhân viên mà anh ta sẽ cần trong đội ngũ nhân viên để giữ thời gian chờ đợi dưới 10 phút. Để đạt được mục tiêu này, bạn sẽ muốn xem xét các tham số của mình để xem những con số nào đưa ra giải pháp tối ưu

Đầu tiên, hãy thử một cái gì đó hoàn toàn điên rồ và sử dụng tối đa tài nguyên. Giả sử có 100 nhân viên thu ngân, 100 người phục vụ và 100 người dẫn đường làm việc trong nhà hát này. Tất nhiên, điều này là không thể, nhưng sử dụng các số cực cao sẽ nhanh chóng cho bạn biết giới hạn của hệ thống là bao nhiêu. Thử ngay bây giờ

import simpy
import random
import statistics
6

Ngay cả khi bạn sử dụng tối đa tài nguyên, bạn sẽ chỉ nhận được thời gian chờ đợi xuống còn 3 phút rưỡi. Bây giờ hãy thử thay đổi các con số để xem liệu bạn có thể giảm thời gian chờ xuống còn 10 phút như người quản lý đã yêu cầu không. Bạn đã đưa ra giải pháp gì?

mô phỏng. pyHiện/Ẩn

import simpy
import random
import statistics
7

Lúc này, bạn sẽ trình bày kết quả của mình với người quản lý và đưa ra đề xuất giúp cải thiện nhà hát. Chẳng hạn, để cắt giảm chi phí, anh ta có thể muốn lắp đặt 10 ki-ốt bán vé ở phía trước nhà hát thay vì giữ 10 nhân viên thu ngân túc trực mỗi đêm

Sự kết luận

Trong hướng dẫn này, bạn đã học cách xây dựng và chạy mô phỏng bằng Python bằng khung công tác

import simpy
import random
import statistics
8. Bạn đã hiểu cách các hệ thống có các tác nhân trải qua các quy trình và cách bạn có thể tạo các biểu diễn ảo của các hệ thống đó để củng cố chúng chống tắc nghẽn và chậm trễ. Mặc dù loại mô phỏng có thể khác nhau, nhưng việc thực hiện tổng thể là như nhau. Bạn sẽ có thể áp dụng những gì bạn đã học ở đây vào nhiều tình huống khác nhau

Bây giờ bạn có thể

  • Động não một thuật toán mô phỏng từng bước
  • Tạo môi trường ảo trong Python với
    import simpy
    import random
    import statistics
    
    8
  • Xác định các chức năng đại diện cho các tác nhân và quy trình
  • Thay đổi các tham số mô phỏng của bạn để tìm ra giải pháp tối ưu

Có rất nhiều thứ bạn có thể làm với

import simpy
import random
import statistics
8, vì vậy đừng để quá trình khám phá của bạn dừng lại ở đây. Lấy những gì bạn đã học và áp dụng nó vào các tình huống mới. Các giải pháp của bạn có thể giúp mọi người tiết kiệm thời gian và tiền bạc quý báu, vì vậy hãy tìm hiểu kỹ và xem bạn có thể tối ưu hóa những quy trình nào khác. Bạn có thể tải xuống mã nguồn cho tập lệnh bạn đã tạo trong hướng dẫn này bằng cách nhấp vào liên kết bên dưới

Tải xuống mã. Nhấp vào đây để tải xuống mã mà bạn sẽ sử dụng để tìm hiểu về SimPy trong hướng dẫn này

Đánh dấu là đã hoàn thành

Xem ngay Hướng dẫn này có một khóa học video liên quan do nhóm Real Python tạo. Xem nó cùng với hướng dẫn bằng văn bản để hiểu sâu hơn. Mô phỏng các quy trình trong thế giới thực bằng Python với SimPy

🐍 Thủ thuật Python 💌

Nhận một Thủ thuật Python ngắn và hấp dẫn được gửi đến hộp thư đến của bạn vài ngày một lần. Không có thư rác bao giờ. Hủy đăng ký bất cứ lúc nào. Được quản lý bởi nhóm Real Python

Cách tạo dữ liệu mô phỏng trong python

Gửi cho tôi thủ thuật Python »

Giới thiệu về Jaya Zhane

Cách tạo dữ liệu mô phỏng trong python
Cách tạo dữ liệu mô phỏng trong python

Jaya là một Pythonista cuồng nhiệt và viết cho Real Python. Cô ấy là sinh viên Thạc sĩ tại Georgia Tech và quan tâm đến khoa học dữ liệu, AI, học máy và xử lý ngôn ngữ tự nhiên

» Thông tin thêm về Jaya


Mỗi hướng dẫn tại Real Python được tạo bởi một nhóm các nhà phát triển để nó đáp ứng các tiêu chuẩn chất lượng cao của chúng tôi. Các thành viên trong nhóm đã làm việc trong hướng dẫn này là

Cách tạo dữ liệu mô phỏng trong python

Aldren

Cách tạo dữ liệu mô phỏng trong python

Geir Arne

Cách tạo dữ liệu mô phỏng trong python

Jim

Cách tạo dữ liệu mô phỏng trong python

Joanna

Bậc thầy Kỹ năng Python trong thế giới thực Với quyền truy cập không giới hạn vào Python thực

Cách tạo dữ liệu mô phỏng trong python

Tham gia với chúng tôi và có quyền truy cập vào hàng nghìn hướng dẫn, khóa học video thực hành và cộng đồng các Pythonista chuyên gia

Nâng cao kỹ năng Python của bạn »

Bậc thầy Kỹ năng Python trong thế giới thực
Với quyền truy cập không giới hạn vào Python thực

Tham gia với chúng tôi và có quyền truy cập vào hàng ngàn hướng dẫn, khóa học video thực hành và cộng đồng các chuyên gia Pythonistas

Nâng cao kỹ năng Python của bạn »

Bạn nghĩ sao?

Đánh giá bài viết này

Tweet Chia sẻ Chia sẻ Email

Bài học số 1 hoặc điều yêu thích mà bạn đã học được là gì?

Mẹo bình luận. Những nhận xét hữu ích nhất là những nhận xét được viết với mục đích học hỏi hoặc giúp đỡ các sinh viên khác. Nhận các mẹo để đặt câu hỏi hay và nhận câu trả lời cho các câu hỏi phổ biến trong cổng thông tin hỗ trợ của chúng tôi

Có thể mô phỏng bằng Python không?

Python cung cấp một hàm sum() có sẵn để tính tổng các số trong danh sách . cú pháp. tổng (có thể lặp lại, bắt đầu) có thể lặp lại. iterable có thể là bất kỳ danh sách, bộ dữ liệu hoặc từ điển nào, nhưng quan trọng nhất nó phải là số. bắt đầu. bắt đầu này được thêm vào tổng số trong lần lặp.

Trình mô phỏng trong Python là gì?

Mô phỏng đang bắt chước các hoạt động diễn ra trong một hệ thống để nghiên cứu hành vi của nó. Phân tích và tạo mô hình của một hệ thống để dự đoán hoạt động của nó được gọi là mô hình hóa mô phỏng

Trình mô phỏng dữ liệu là gì?

Mô phỏng dữ liệu là quá trình lấy một lượng lớn dữ liệu và sử dụng dữ liệu đó để mô phỏng các tình huống hoặc điều kiện trong thế giới thực . Về mặt kỹ thuật, nó có thể được mô tả là việc tạo ra các số hoặc dữ liệu ngẫu nhiên từ một quy trình ngẫu nhiên được biểu thị dưới dạng phương trình phân phối (e. g. , Bình thường. X~N(μ, σ²)).