Hướng dẫn python random choice with probability - lựa chọn ngẫu nhiên python với xác suất

Kể từ Python v3.6, random.choices có thể được sử dụng để trả về list các yếu tố có kích thước quy định từ dân số nhất định 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']
0

  • Dân số: list 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']
    
    2)

  • 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 (________ 13) của list được xuất ra. (Mặc định

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


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']
6 chỉ có thể đảm nhận xác suất là trọng số và cũng phải đảm bảo tổng số 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 về các loại số (
>>> random.choices(["white", "green", "red"], k=10)
['white', 'white', 'green', 'red', 'red', 'red', 'white', 'white', 'white', 'green']
7 ngoại trừ loại
>>> random.choices(["white", "green", "red"], k=10)
['white', 'white', 'green', 'red', 'red', 'red', 'white', 'white', 'white', 'green']
8), 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']
9.

>>> 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

>>> np.random.choice(5, 3)
array([0, 3, 4]) # random
>>> #This is equivalent to np.random.randint(0,5,3)
0 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

>>> np.random.choice(5, 3)
array([0, 3, 4]) # random
>>> #This is equivalent to np.random.randint(0,5,3)
1 hoặc
>>> np.random.choice(5, 3)
array([0, 3, 4]) # random
>>> #This is equivalent to np.random.randint(0,5,3)
2 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.

ngẫu nhiên.choice (a, size = none, thay thế = true, p = none)#choice(a, size=None, replace=True, p=None)#

Tạo một mẫu ngẫu nhiên từ một mảng 1-D đã cho

Mới trong phiên bản 1.7.0.

Ghi chú

Mã mới nên sử dụng phương thức

>>> np.random.choice(5, 3)
array([0, 3, 4]) # random
>>> #This is equivalent to np.random.randint(0,5,3)
3 của một thể hiện
>>> np.random.choice(5, 3)
array([0, 3, 4]) # random
>>> #This is equivalent to np.random.randint(0,5,3)
4 thay thế; Vui lòng xem bắt đầu nhanh chóng.Quick Start.

Tham số giống như mảng hoặc inta1-D array-like or int

Nếu một ndarray, một mẫu ngẫu nhiên được tạo từ các yếu tố của nó. Nếu một int, mẫu ngẫu nhiên được tạo như thể nó là

>>> np.random.choice(5, 3)
array([0, 3, 4]) # random
>>> #This is equivalent to np.random.randint(0,5,3)
5

kích thước hoặc tuple của int, tùy chọnint or tuple of ints, optional

Hình dạng đầu ra. Nếu hình dạng đã cho là, ví dụ,

>>> np.random.choice(5, 3)
array([0, 3, 4]) # random
>>> #This is equivalent to np.random.randint(0,5,3)
6, thì các mẫu
>>> np.random.choice(5, 3)
array([0, 3, 4]) # random
>>> #This is equivalent to np.random.randint(0,5,3)
7 được rút ra. Mặc định là không, trong trường hợp đó, một giá trị duy nhất được trả về.

Thay thế Bolean, tùy chọnboolean, optional

Cho dù mẫu có hoặc không có thay thế. Mặc định là đúng, có nghĩa là giá trị của

>>> np.random.choice(5, 3)
array([0, 3, 4]) # random
>>> #This is equivalent to np.random.randint(0,5,3)
8 có thể được chọn nhiều lần.

giống như mảng p1-d, tùy chọn1-D array-like, optional

Các xác suất liên quan đến mỗi mục trong a. Nếu không được đưa ra, mẫu giả định phân phối đồng đều trên tất cả các mục trong

>>> np.random.choice(5, 3)
array([0, 3, 4]) # random
>>> #This is equivalent to np.random.randint(0,5,3)
8.

ReturnSsSmplessingle Item hoặc ndarraysamplessingle item or ndarray

Các mẫu ngẫu nhiên được tạo

RAISEVALUEERROR

Nếu A là INT và nhỏ hơn 0, nếu A hoặc P không phải là 1 chiều, nếu A là một mảng có kích thước 0, nếu P không phải là vectơ của xác suất, nếu A và P có độ dài khác nhau hoặc nếu thay thế = sai và kích thước mẫu lớn hơn kích thước dân số

Ghi chú

Đặt xác suất do người dùng chỉ định thông qua

>>> np.random.choice(5, 3, p=[0.1, 0, 0.3, 0.6, 0])
array([3, 3, 0]) # random
0 sử dụng bộ lấy mẫu tổng quát nhưng kém hiệu quả hơn so với mặc định. Bộ lấy mẫu chung tạo ra một mẫu khác với bộ lấy mẫu được tối ưu hóa ngay cả khi mỗi phần tử của
>>> np.random.choice(5, 3, p=[0.1, 0, 0.3, 0.6, 0])
array([3, 3, 0]) # random
0 là 1 / LEN (A).

Việc lấy mẫu các hàng ngẫu nhiên từ một mảng 2 chiều là không thể với chức năng này, nhưng có thể với

>>> np.random.choice(5, 3, p=[0.1, 0, 0.3, 0.6, 0])
array([3, 3, 0]) # random
2 thông qua từ khóa
>>> np.random.choice(5, 3, p=[0.1, 0, 0.3, 0.6, 0])
array([3, 3, 0]) # random
3 của nó.

Ví dụ

Tạo một mẫu ngẫu nhiên thống nhất từ ​​NP.Arange (5) có kích thước 3:

>>> np.random.choice(5, 3)
array([0, 3, 4]) # random
>>> #This is equivalent to np.random.randint(0,5,3)

Tạo một mẫu ngẫu nhiên không đồng nhất từ ​​NP.Arange (5) có kích thước 3:

>>> np.random.choice(5, 3, p=[0.1, 0, 0.3, 0.6, 0])
array([3, 3, 0]) # random

Tạo một mẫu ngẫu nhiên thống nhất từ ​​NP.Arange (5) có kích thước 3 mà không cần thay thế:

>>> np.random.choice(5, 3, replace=False)
array([3,1,0]) # random
>>> #This is equivalent to np.random.permutation(np.arange(5))[:3]

Tạo một mẫu ngẫu nhiên không đồng nhất từ ​​NP.Arange (5) có kích thước 3 mà không cần thay thế:

>>> np.random.choice(5, 3, replace=False, p=[0.1, 0, 0.3, 0.6, 0])
array([2, 3, 0]) # random

Bất kỳ điều nào ở trên đều có thể được lặp lại với một mảng tùy ý thay vì chỉ số nguyên. Ví dụ:

>>> aa_milne_arr = ['pooh', 'rabbit', 'piglet', 'Christopher']
>>> np.random.choice(aa_milne_arr, 5, p=[0.5, 0.1, 0.1, 0.3])
array(['pooh', 'pooh', 'pooh', 'Christopher', 'piglet'], # random
      dtype='<U11')

Làm thế nào để bạn thực hiện xác suất ngẫu nhiên trong Python?

Sử dụng ngẫu nhiên. Chức năng lựa chọn () để có được các mẫu ngẫu nhiên có trọng số trong Python ...
Chọn 10 - 10% thời gian ..
Chọn 20 - 25% thời gian ..
Chọn 30 - 50% thời gian ..
Chọn 40 - 15% thời gian ..

Làm thế nào để tôi có được Python để tạo ra các lựa chọn ngẫu nhiên?

Để thực hiện một bộ chọn lựa chọn ngẫu nhiên trong Python, bạn có thể sử dụng chức năng ngẫu nhiên.choice () và ngẫu nhiên.choices ().Các chức năng này cho phép bạn truy xuất một mục ngẫu nhiên duy nhất và nhiều mục ngẫu nhiên từ một chuỗi các mục tương ứng.use the random. choice() and random. choices() function. These functions allow you to retrieve a single random item and multiple random items from a sequence of items, respectively.

Làm thế nào để bạn chọn các phần tử từ danh sách với xác suất khác nhau bằng cách sử dụng Numpy?

ngẫu nhiên.Phương thức lựa chọn () để chọn các yếu tố từ danh sách với xác suất khác nhau.Đầu ra: Trả về mảng numpy của các mẫu ngẫu nhiên.Lưu ý: Tham số P là xác suất liên quan đến mỗi mục trong (mảng 1D).

Làm thế nào để bạn thực hiện lựa chọn ngẫu nhiên có trọng số?

Đối với lựa chọn ngẫu nhiên với các trọng số cụ thể, kỹ thuật sau đây có thể được sử dụng: tạo ra một số ngẫu nhiên giữa 0 và S u m (w)-1 sum (w) -1 tổng (w).tổng lớn hơn số được chọn ngẫu nhiên.Generate a random number between 0 and s u m ( w ) − 1 sum(w)-1 sum(w)−1. Find the smallest index that corresponds to the prefix sum greater than the randomly chosen number.