Hướng dẫn python weighted random - trăn trọng lượng ngẫu nhiên

Kể từ Python

>>> random.choices(["white", "green", "red"], k=10)
['white', 'white', 'green', 'red', 'red', 'red', 'white', 'white', 'white', 'green']
04,
>>> random.choices(["white", "green", "red"], k=10)
['white', 'white', 'green', 'red', 'red', 'red', 'white', 'white', 'white', 'green']
05 có thể được sử dụng để trả về
>>> random.choices(["white", "green", "red"], k=10)
['white', 'white', 'green', 'red', 'red', 'red', 'white', 'white', 'white', 'green']
06 các yếu tố có kích thước quy định từ dân số đã cho với trọng số tùy chọn.

>>> random.choices(["white", "green", "red"], k=10)
['white', 'white', 'green', 'red', 'red', 'red', 'white', 'white', 'white', 'green']
07

  • Dân số:

    >>> random.choices(["white", "green", "red"], k=10)
    ['white', 'white', 'green', 'red', 'red', 'red', 'white', 'white', 'white', 'green']
    
    06 chứa các quan sát độc đáo. (Nếu trống, tăng

    >>> random.choices(["white", "green", "red"], k=10)
    ['white', 'white', 'green', 'red', 'red', 'red', 'white', 'white', 'white', 'green']
    
    1)
  • Trọng lượng: Trọng lượng tương đối chính xác hơn cần thiết để thực hiện các lựa chọn.

  • Cum_ weights: Trọng lượng tích lũy cần thiết để thực hiện các lựa chọn.

  • K: Kích thước (________ 12) của

    >>> random.choices(["white", "green", "red"], k=10)
    ['white', 'white', 'green', 'red', 'red', 'red', 'white', 'white', 'white', 'green']
    
    06 được xuất ra. (Mặc định

    >>> random.choices(["white", "green", "red"], k=10)
    ['white', 'white', 'green', 'red', 'red', 'red', 'white', 'white', 'white', 'green']
    
    4)

Vài cảnh báo:

1) Nó sử dụng lấy mẫu có trọng số với sự thay thế để các mục được rút ra sau đó sẽ được thay thế. Các giá trị trong chuỗi trọng số trong chính nó không quan trọng, nhưng tỷ lệ tương đối của chúng thì có.

Không giống như

>>> random.choices(["white", "green", "red"], k=10)
['white', 'white', 'green', 'red', 'red', 'red', 'white', 'white', 'white', 'green']
5 chỉ có thể đảm nhận xác suất là trọng số và cũng phải đảm bảo tổng kết xác suất riêng lẻ lên tới 1 tiêu chí, không có quy định nào như vậy ở đây. Miễn là chúng thuộc loại số (
>>> random.choices(["white", "green", "red"], k=10)
['white', 'white', 'green', 'red', 'red', 'red', 'white', 'white', 'white', 'green']
6 ngoại trừ loại
>>> random.choices(["white", "green", "red"], k=10)
['white', 'white', 'green', 'red', 'red', 'red', 'white', 'white', 'white', 'green']
7), chúng vẫn sẽ thực hiện.
>>> import random
# weights being integers
>>> random.choices(["white", "green", "red"], [12, 12, 4], k=10)
['green', 'red', 'green', 'white', 'white', 'white', 'green', 'white', 'red', 'white']
# weights being floats
>>> random.choices(["white", "green", "red"], [.12, .12, .04], k=10)
['white', 'white', 'green', 'green', 'red', 'red', 'white', 'green', 'white', 'green']
# weights being fractions
>>> random.choices(["white", "green", "red"], [12/100, 12/100, 4/100], k=10)
['green', 'green', 'white', 'red', 'green', 'red', 'white', 'green', 'green', 'green']

2) Nếu không có trọng số và cum_ weights được chỉ định, các lựa chọn được thực hiện với xác suất bằng nhau. Nếu một chuỗi trọng số được cung cấp, nó phải có cùng chiều dài với trình tự dân số.

Chỉ định cả trọng lượng và cum_ weights tăng

>>> random.choices(["white", "green", "red"], k=10)
['white', 'white', 'green', 'red', 'red', 'red', 'white', 'white', 'white', 'green']
8.
>>> random.choices(["white", "green", "red"], k=10)
['white', 'white', 'green', 'red', 'red', 'red', 'white', 'white', 'white', 'green']

3) Cum_ weights thường là kết quả của hàm

>>> random.choices(["white", "green", "red"], k=10)
['white', 'white', 'green', 'red', 'red', 'red', 'white', 'white', 'white', 'green']
9 thực sự tiện dụng trong các tình huống như vậy.

Từ tài liệu được liên kết:

Trong nội bộ, các trọng số tương đối được chuyển đổi thành trọng số tích lũy trước khi thực hiện các lựa chọn, do đó, việc cung cấp các trọng số tích lũy tiết kiệm công việc.

Vì vậy, hoặc cung cấp

[200, 300, 300, 300, 400]
0 hoặc
[200, 300, 300, 300, 400]
1 cho trường hợp giả định của chúng tôi tạo ra kết quả tương tự và sau này dường như nhanh hơn / hiệu quả hơn.

Sử dụng phương thức numpy.random.choice ()

  1. Nếu bạn đang sử dụng Python cũ hơn 3,6 phiên bản, thì bạn phải sử dụng thư viện Numpy để đạt được các số ngẫu nhiên có trọng số. Với phương thức trợ giúp của phương thức (), chúng ta có thể lấy các mẫu ngẫu nhiên của một mảng một chiều và trả về các mẫu ngẫu nhiên của mảng numpy.
  2. Cú pháp: numpy.random.choice (list, k, p = none)

Danh sách: Đây là danh sách ban đầu từ bạn có các số ngẫu nhiên chọn.

K: Đó là kích thước của danh sách trở lại. tức là, số lượng các yếu tố bạn muốn chọn.choices() method returns multiple random elements from the list with replacement. You can weigh the possibility of each result with the weights parameter or the cum_weights parameter.choices() method returns multiple random elements from the list with replacement. You can weigh the possibility of each result with the weights parameter or the cum_weights parameter.

P: Đó là xác suất của từng yếu tố. random.choices(sequence, weights=None, cum_weights=None, k=1) random.choices(sequence, weights=None, cum_weights=None, k=1)

Lưu ý: Tổng số xác suất của tất cả các phần tử phải bằng 1.1. sequence is a mandatory parameter that can be a list, tuple, or string.2. weights is an optional parameter which is used to weigh the possibility for each value.3. cum_weights is an optional parameter which is used to weigh the possibility for each value but in this the possibility is accumulated4. k is an optional parameter that is used to define the length of the returned list.
1. sequence is a mandatory parameter that can be a list, tuple, or string.
2. weights is an optional parameter which is used to weigh the possibility for each value.
3. cum_weights is an optional parameter which is used to weigh the possibility for each value but in this the possibility is accumulated
4. k is an optional parameter that is used to define the length of the returned list.

Python

Python3

[200, 300, 300, 300, 400]
2
[200, 300, 300, 300, 400]
3
[200, 300, 300, 300, 400]
4
[200, 300, 300, 300, 400]
5
[200, 300, 300, 300, 400]
6
[200, 300, 300, 300, 400]
7
[200, 300, 300, 300, 400]
8
[200, 300, 300, 300, 400]
9
[200, 300, 300, 300, 400]
8
>>> random.choices(["white", "green", "red"], k=10)
['white', 'white', 'green', 'red', 'red', 'red', 'white', 'white', 'white', 'green']
01
[200, 300, 300, 300, 400]
8
>>> random.choices(["white", "green", "red"], k=10)
['white', 'white', 'green', 'red', 'red', 'red', 'white', 'white', 'white', 'green']
03
[200, 300, 300, 300, 400]
8
>>> random.choices(["white", "green", "red"], k=10)
['white', 'white', 'green', 'red', 'red', 'red', 'white', 'white', 'white', 'green']
05____36
>>> random.choices(["white", "green", "red"], k=10)
['white', 'white', 'green', 'red', 'red', 'red', 'white', 'white', 'white', 'green']
07
[200, 300, 300, 300, 400]
5
>>> random.choices(["white", "green", "red"], k=10)
['white', 'white', 'green', 'red', 'red', 'red', 'white', 'white', 'white', 'green']
09
>>> random.choices(["white", "green", "red"], k=10)
['white', 'white', 'green', 'red', 'red', 'red', 'white', 'white', 'white', 'green']
80
>>> random.choices(["white", "green", "red"], k=10)
['white', 'white', 'green', 'red', 'red', 'red', 'white', 'white', 'white', 'green']
81
[200, 300, 300, 300, 400]
5
>>> random.choices(["white", "green", "red"], k=10)
['white', 'white', 'green', 'red', 'red', 'red', 'white', 'white', 'white', 'green']
83
>>> random.choices(["white", "green", "red"], k=10)
['white', 'white', 'green', 'red', 'red', 'red', 'white', 'white', 'white', 'green']
84
[200, 300, 300, 300, 400]
8
>>> random.choices(["white", "green", "red"], k=10)
['white', 'white', 'green', 'red', 'red', 'red', 'white', 'white', 'white', 'green']
86
[200, 300, 300, 300, 400]
8
>>> random.choices(["white", "green", "red"], k=10)
['white', 'white', 'green', 'red', 'red', 'red', 'white', 'white', 'white', 'green']
88
[200, 300, 300, 300, 400]
8
>>> random.choices(["white", "green", "red"], k=10)
['white', 'white', 'green', 'red', 'red', 'red', 'white', 'white', 'white', 'green']
80
[200, 300, 300, 300, 400]
8
>>> random.choices(["white", "green", "red"], k=10)
['white', 'white', 'green', 'red', 'red', 'red', 'white', 'white', 'white', 'green']
82
>>> random.choices(["white", "green", "red"], k=10)
['white', 'white', 'green', 'red', 'red', 'red', 'white', 'white', 'white', 'green']
83
[200, 300, 300, 300, 400]
5
>>> random.choices(["white", "green", "red"], k=10)
['white', 'white', 'green', 'red', 'red', 'red', 'white', 'white', 'white', 'green']
85
>>> random.choices(["white", "green", "red"], k=10)
['white', 'white', 'green', 'red', 'red', 'red', 'white', 'white', 'white', 'green']
86
>>> random.choices(["white", "green", "red"], k=10)
['white', 'white', 'green', 'red', 'red', 'red', 'white', 'white', 'white', 'green']
87
>>> random.choices(["white", "green", "red"], k=10)
['white', 'white', 'green', 'red', 'red', 'red', 'white', 'white', 'white', 'green']
88

Output:

[200, 300, 300, 300, 400]

Bạn cũng có thể sử dụng tham số Cum_weight. Nó là viết tắt của trọng lượng giao hoán. Theo mặc định, nếu chúng ta sẽ sử dụng phương pháp trên và gửi trọng số hơn hàm này sẽ thay đổi trọng lượng thành trọng lượng giao hoán. Vì vậy, để làm cho chương trình sử dụng nhanh Cum_weight. Trọng lượng tích lũy được tính bằng công thức:

Hướng dẫn python weighted random - trăn trọng lượng ngẫu nhiên

>>> random.choices(["white", "green", "red"], k=10)
['white', 'white', 'green', 'red', 'red', 'red', 'white', 'white', 'white', 'green']
0

Example:

Python3

[200, 300, 300, 300, 400]
2
[200, 300, 300, 300, 400]
3
[200, 300, 300, 300, 400]
4
[200, 300, 300, 300, 400]
5
[200, 300, 300, 300, 400]
6
[200, 300, 300, 300, 400]
7
[200, 300, 300, 300, 400]
8
[200, 300, 300, 300, 400]
9
[200, 300, 300, 300, 400]
8
>>> random.choices(["white", "green", "red"], k=10)
['white', 'white', 'green', 'red', 'red', 'red', 'white', 'white', 'white', 'green']
01
[200, 300, 300, 300, 400]
8
>>> random.choices(["white", "green", "red"], k=10)
['white', 'white', 'green', 'red', 'red', 'red', 'white', 'white', 'white', 'green']
03
[200, 300, 300, 300, 400]
8
>>> random.choices(["white", "green", "red"], k=10)
['white', 'white', 'green', 'red', 'red', 'red', 'white', 'white', 'white', 'green']
05____36
>>> random.choices(["white", "green", "red"], k=10)
['white', 'white', 'green', 'red', 'red', 'red', 'white', 'white', 'white', 'green']
07
[200, 300, 300, 300, 400]
5
>>> random.choices(["white", "green", "red"], k=10)
['white', 'white', 'green', 'red', 'red', 'red', 'white', 'white', 'white', 'green']
09

Các

>>> random.choices(["white", "green", "red"], k=10)
['white', 'white', 'green', 'red', 'red', 'red', 'white', 'white', 'white', 'green']
87
>>> random.choices(["white", "green", "red"], k=10)
['white', 'white', 'green', 'red', 'red', 'red', 'white', 'white', 'white', 'green']
88

Output:

>>> random.choices(["white", "green", "red"], k=10)
['white', 'white', 'green', 'red', 'red', 'red', 'white', 'white', 'white', 'green']
8

Sử dụng phương thức numpy.random.choice ()

Nếu bạn đang sử dụng Python cũ hơn 3,6 phiên bản, thì bạn phải sử dụng thư viện Numpy để đạt được các số ngẫu nhiên có trọng số. Với phương thức trợ giúp của phương thức (), chúng ta có thể lấy các mẫu ngẫu nhiên của một mảng một chiều và trả về các mẫu ngẫu nhiên của mảng numpy.With the help of choice() method, we can get the random samples of one dimensional array and return the random samples of numpy array.

Cú pháp: numpy.random.choice (list, k, p = none)numpy.random.choice(list,k, p=None)

Danh sách: Đây là danh sách ban đầu từ bạn có các số ngẫu nhiên chọn. It is the original list from you have select random numbers.

K: Đó là kích thước của danh sách trở lại.tức là, số lượng các yếu tố bạn muốn chọn. It is the size of the returning list. i.e, the number of elements you want to select. It is the size of the returning list. i.e, the number of elements you want to select.

P: Đó là xác suất của từng yếu tố. It is the probability of each element. It is the probability of each element.

Lưu ý: Tổng số xác suất của tất cả các phần tử phải bằng 1. the total sum of the probability of all the elements should be equal to 1. the total sum of the probability of all the elements should be equal to 1.

Example:

Python

>>> random.choices(["white", "green", "red"], k=10)
['white', 'white', 'green', 'red', 'red', 'red', 'white', 'white', 'white', 'green']
076
>>> random.choices(["white", "green", "red"], k=10)
['white', 'white', 'green', 'red', 'red', 'red', 'white', 'white', 'white', 'green']
077

[200, 300, 300, 300, 400]
2
>>> random.choices(["white", "green", "red"], k=10)
['white', 'white', 'green', 'red', 'red', 'red', 'white', 'white', 'white', 'green']
079
[200, 300, 300, 300, 400]
4
[200, 300, 300, 300, 400]
5
[200, 300, 300, 300, 400]
6
[200, 300, 300, 300, 400]
7
[200, 300, 300, 300, 400]
8
[200, 300, 300, 300, 400]
9
[200, 300, 300, 300, 400]
8
>>> random.choices(["white", "green", "red"], k=10)
['white', 'white', 'green', 'red', 'red', 'red', 'white', 'white', 'white', 'green']
01
[200, 300, 300, 300, 400]
8
>>> random.choices(["white", "green", "red"], k=10)
['white', 'white', 'green', 'red', 'red', 'red', 'white', 'white', 'white', 'green']
03
[200, 300, 300, 300, 400]
8
>>> random.choices(["white", "green", "red"], k=10)
['white', 'white', 'green', 'red', 'red', 'red', 'white', 'white', 'white', 'green']
05____36
>>> random.choices(["white", "green", "red"], k=10)
['white', 'white', 'green', 'red', 'red', 'red', 'white', 'white', 'white', 'green']
13
[200, 300, 300, 300, 400]
5
>>> random.choices(["white", "green", "red"], k=10)
['white', 'white', 'green', 'red', 'red', 'red', 'white', 'white', 'white', 'green']
15
>>> random.choices(["white", "green", "red"], k=10)
['white', 'white', 'green', 'red', 'red', 'red', 'white', 'white', 'white', 'green']
80
>>> random.choices(["white", "green", "red"], k=10)
['white', 'white', 'green', 'red', 'red', 'red', 'white', 'white', 'white', 'green']
17
>>> random.choices(["white", "green", "red"], k=10)
['white', 'white', 'green', 'red', 'red', 'red', 'white', 'white', 'white', 'green']
85
>>> random.choices(["white", "green", "red"], k=10)
['white', 'white', 'green', 'red', 'red', 'red', 'white', 'white', 'white', 'green']
19
[200, 300, 300, 300, 400]
5
[200, 300, 300, 300, 400]
6
>>> random.choices(["white", "green", "red"], k=10)
['white', 'white', 'green', 'red', 'red', 'red', 'white', 'white', 'white', 'green']
22
[200, 300, 300, 300, 400]
8
>>> random.choices(["white", "green", "red"], k=10)
['white', 'white', 'green', 'red', 'red', 'red', 'white', 'white', 'white', 'green']
24
[200, 300, 300, 300, 400]
8
>>> random.choices(["white", "green", "red"], k=10)
['white', 'white', 'green', 'red', 'red', 'red', 'white', 'white', 'white', 'green']
26
[200, 300, 300, 300, 400]
8
>>> random.choices(["white", "green", "red"], k=10)
['white', 'white', 'green', 'red', 'red', 'red', 'white', 'white', 'white', 'green']
28
[200, 300, 300, 300, 400]
8
>>> random.choices(["white", "green", "red"], k=10)
['white', 'white', 'green', 'red', 'red', 'red', 'white', 'white', 'white', 'green']
30
>>> random.choices(["white", "green", "red"], k=10)
['white', 'white', 'green', 'red', 'red', 'red', 'white', 'white', 'white', 'green']
31
>>> random.choices(["white", "green", "red"], k=10)
['white', 'white', 'green', 'red', 'red', 'red', 'white', 'white', 'white', 'green']
87
>>> random.choices(["white", "green", "red"], k=10)
['white', 'white', 'green', 'red', 'red', 'red', 'white', 'white', 'white', 'green']
33

Output:

>>> random.choices(["white", "green", "red"], k=10)
['white', 'white', 'green', 'red', 'red', 'red', 'white', 'white', 'white', 'green']
8