Hướng dẫn how do you generate a random number from a given distribution in python? - làm thế nào để bạn tạo một số ngẫu nhiên từ một phân phối nhất định trong python?

Không có câu trả lời nào trong số này đặc biệt rõ ràng hoặc đơn giản.

Đây là một phương pháp rõ ràng, đơn giản được đảm bảo để làm việc.

Accumulation_normalize_probabilities cần một từ điển

>>> accumulate_normalize_values( { 'a': 100, 'b' : 300, 'c' : 400, 'd' : 200  } )
[('a', 0.1), ('c', 0.5), ('b', 0.8), ('d', 1.0)]
7 ánh xạ các ký hiệu cho xác suất hoặc tần số. Nó đưa ra danh sách các bộ dữ liệu có thể sử dụng để thực hiện lựa chọn. takes a dictionary
>>> accumulate_normalize_values( { 'a': 100, 'b' : 300, 'c' : 400, 'd' : 200  } )
[('a', 0.1), ('c', 0.5), ('b', 0.8), ('d', 1.0)]
7 that maps symbols to probabilities OR frequencies. It outputs usable list of tuples from which to do selection.

def accumulate_normalize_values(p):
        pi = p.items() if isinstance(p,dict) else p
        accum_pi = []
        accum = 0
        for i in pi:
                accum_pi.append((i[0],i[1]+accum))
                accum += i[1]
        if accum == 0:
                raise Exception( "You are about to explode the universe. Continue ? Y/N " )
        normed_a = []
        for a in accum_pi:
                normed_a.append((a[0],a[1]*1.0/accum))
        return normed_a

Yields:

>>> accumulate_normalize_values( { 'a': 100, 'b' : 300, 'c' : 400, 'd' : 200  } )
[('a', 0.1), ('c', 0.5), ('b', 0.8), ('d', 1.0)]

Tại sao nó hoạt động

Bước tích lũy biến từng ký hiệu thành một khoảng giữa chính nó và xác suất hoặc tần số ký hiệu trước đó (hoặc 0 trong trường hợp ký hiệu đầu tiên). Các khoảng thời gian này có thể được sử dụng để chọn từ (và do đó lấy mẫu phân phối được cung cấp) bằng cách bước qua danh sách cho đến khi số ngẫu nhiên trong khoảng 0,0 -> 1.0 (được chuẩn bị trước đó) ít hoặc bằng với điểm cuối của biểu tượng hiện tại.accumulation step turns each symbol into an interval between itself and the previous symbols probability or frequency (or 0 in the case of the first symbol). These intervals can be used to select from (and thus sample the provided distribution) by simply stepping through the list until the random number in interval 0.0 -> 1.0 (prepared earlier) is less or equal to the current symbol's interval end-point.

Việc chuẩn hóa giải phóng chúng tôi từ nhu cầu đảm bảo mọi thứ tổng hợp thành một số giá trị. Sau khi bình thường hóa, "vectơ" của xác suất tổng tới 1.0.normalization releases us from the need to make sure everything sums to some value. After normalization the "vector" of probabilities sums to 1.0.

Phần còn lại của mã để lựa chọn và tạo mẫu dài tùy ý từ phân phối dưới đây:

def select(symbol_intervals,random):
        print symbol_intervals,random
        i = 0
        while random > symbol_intervals[i][1]:
                i += 1
                if i >= len(symbol_intervals):
                        raise Exception( "What did you DO to that poor list?" )
        return symbol_intervals[i][0]


def gen_random(alphabet,length,probabilities=None):
        from random import random
        from itertools import repeat
        if probabilities is None:
                probabilities = dict(zip(alphabet,repeat(1.0)))
        elif len(probabilities) > 0 and isinstance(probabilities[0],(int,long,float)):
                probabilities = dict(zip(alphabet,probabilities)) #ordered
        usable_probabilities = accumulate_normalize_values(probabilities)
        gen = []
        while len(gen) < length:
                gen.append(select(usable_probabilities,random()))
        return gen

Cách sử dụng :

>>> gen_random (['a','b','c','d'],10,[100,300,400,200])
['d', 'b', 'b', 'a', 'c', 'c', 'b', 'c', 'c', 'c']   #<--- some of the time

Tạo số ngẫu nhiên là một nhiệm vụ lập trình phổ biến được yêu cầu cho nhiều chương trình và ứng dụng khác nhau. Trong Python, cách phổ biến nhất để tạo ra các số ngẫu nhiên được cho là mô -đun numpy. Numpy nhanh, đáng tin cậy, dễ cài đặt và dựa vào nhiều chương trình.

Tính đến năm 2022 (

>>> accumulate_normalize_values( { 'a': 100, 'b' : 300, 'c' : 400, 'd' : 200  } )
[('a', 0.1), ('c', 0.5), ('b', 0.8), ('d', 1.0)]
8 phiên bản 1.22), cách thích hợp để tạo các số ngẫu nhiên với Numpy đã thay đổi. Hướng dẫn này sẽ chứng minh những điều cơ bản của việc sử dụng Numpy để tạo ra các số thập phân, số nguyên và phân phối ngẫu nhiên cho chương trình hoặc ứng dụng Python của bạn.

Theo dõi cùng với sổ ghi chép Jupyter dưới đây để bắt đầu tìm hiểu tất cả về tạo số ngẫu nhiên.

nprandom

Điều đầu tiên chúng ta cần làm để tạo ra các số ngẫu nhiên trong Python với

>>> accumulate_normalize_values( { 'a': 100, 'b' : 300, 'c' : 400, 'd' : 200  } )
[('a', 0.1), ('c', 0.5), ('b', 0.8), ('d', 1.0)]
8 là khởi tạo một trình tạo ngẫu nhiên. Trình tạo này sẽ cho phép chúng tôi tạo ra các số ngẫu nhiên bằng nhiều phương thức khác nhau. Đối với những ví dụ này, chúng tôi sẽ sử dụng
def select(symbol_intervals,random):
        print symbol_intervals,random
        i = 0
        while random > symbol_intervals[i][1]:
                i += 1
                if i >= len(symbol_intervals):
                        raise Exception( "What did you DO to that poor list?" )
        return symbol_intervals[i][0]


def gen_random(alphabet,length,probabilities=None):
        from random import random
        from itertools import repeat
        if probabilities is None:
                probabilities = dict(zip(alphabet,repeat(1.0)))
        elif len(probabilities) > 0 and isinstance(probabilities[0],(int,long,float)):
                probabilities = dict(zip(alphabet,probabilities)) #ordered
        usable_probabilities = accumulate_normalize_values(probabilities)
        gen = []
        while len(gen) < length:
                gen.append(select(usable_probabilities,random()))
        return gen
0. Bạn có thể kiểm tra tài liệu
>>> accumulate_normalize_values( { 'a': 100, 'b' : 300, 'c' : 400, 'd' : 200  } )
[('a', 0.1), ('c', 0.5), ('b', 0.8), ('d', 1.0)]
8 để biết thêm thông tin về các phương thức khác để tạo số ngẫu nhiên.

Hãy bắt đầu bằng cách bắt đầu bằng cách sử dụng một biến

def select(symbol_intervals,random):
        print symbol_intervals,random
        i = 0
        while random > symbol_intervals[i][1]:
                i += 1
                if i >= len(symbol_intervals):
                        raise Exception( "What did you DO to that poor list?" )
        return symbol_intervals[i][0]


def gen_random(alphabet,length,probabilities=None):
        from random import random
        from itertools import repeat
        if probabilities is None:
                probabilities = dict(zip(alphabet,repeat(1.0)))
        elif len(probabilities) > 0 and isinstance(probabilities[0],(int,long,float)):
                probabilities = dict(zip(alphabet,probabilities)) #ordered
        usable_probabilities = accumulate_normalize_values(probabilities)
        gen = []
        while len(gen) < length:
                gen.append(select(usable_probabilities,random()))
        return gen
0 như là biến
def select(symbol_intervals,random):
        print symbol_intervals,random
        i = 0
        while random > symbol_intervals[i][1]:
                i += 1
                if i >= len(symbol_intervals):
                        raise Exception( "What did you DO to that poor list?" )
        return symbol_intervals[i][0]


def gen_random(alphabet,length,probabilities=None):
        from random import random
        from itertools import repeat
        if probabilities is None:
                probabilities = dict(zip(alphabet,repeat(1.0)))
        elif len(probabilities) > 0 and isinstance(probabilities[0],(int,long,float)):
                probabilities = dict(zip(alphabet,probabilities)) #ordered
        usable_probabilities = accumulate_normalize_values(probabilities)
        gen = []
        while len(gen) < length:
                gen.append(select(usable_probabilities,random()))
        return gen
3.

In [ ]:

rng = np.random.default_rng()

Số thập phân ngẫu nhiên (điểm nổi, hoặc float) số

Bây giờ, chúng ta có thể sử dụng

def select(symbol_intervals,random):
        print symbol_intervals,random
        i = 0
        while random > symbol_intervals[i][1]:
                i += 1
                if i >= len(symbol_intervals):
                        raise Exception( "What did you DO to that poor list?" )
        return symbol_intervals[i][0]


def gen_random(alphabet,length,probabilities=None):
        from random import random
        from itertools import repeat
        if probabilities is None:
                probabilities = dict(zip(alphabet,repeat(1.0)))
        elif len(probabilities) > 0 and isinstance(probabilities[0],(int,long,float)):
                probabilities = dict(zip(alphabet,probabilities)) #ordered
        usable_probabilities = accumulate_normalize_values(probabilities)
        gen = []
        while len(gen) < length:
                gen.append(select(usable_probabilities,random()))
        return gen
3 để tạo ra một số số ngẫu nhiên. Hãy để tạo ra một chiếc phao ngẫu nhiên (thập phân) làm ví dụ. Để tạo ra một chiếc phao ngẫu nhiên, chúng tôi sử dụng phương pháp
def select(symbol_intervals,random):
        print symbol_intervals,random
        i = 0
        while random > symbol_intervals[i][1]:
                i += 1
                if i >= len(symbol_intervals):
                        raise Exception( "What did you DO to that poor list?" )
        return symbol_intervals[i][0]


def gen_random(alphabet,length,probabilities=None):
        from random import random
        from itertools import repeat
        if probabilities is None:
                probabilities = dict(zip(alphabet,repeat(1.0)))
        elif len(probabilities) > 0 and isinstance(probabilities[0],(int,long,float)):
                probabilities = dict(zip(alphabet,probabilities)) #ordered
        usable_probabilities = accumulate_normalize_values(probabilities)
        gen = []
        while len(gen) < length:
                gen.append(select(usable_probabilities,random()))
        return gen
5. Điều này sẽ tạo ra một số thập phân lớn hơn 0 và nhỏ hơn một.

Để tạo ra một mảng phao ngẫu nhiên, chúng ta có thể chuyển một đối số kích thước thành

def select(symbol_intervals,random):
        print symbol_intervals,random
        i = 0
        while random > symbol_intervals[i][1]:
                i += 1
                if i >= len(symbol_intervals):
                        raise Exception( "What did you DO to that poor list?" )
        return symbol_intervals[i][0]


def gen_random(alphabet,length,probabilities=None):
        from random import random
        from itertools import repeat
        if probabilities is None:
                probabilities = dict(zip(alphabet,repeat(1.0)))
        elif len(probabilities) > 0 and isinstance(probabilities[0],(int,long,float)):
                probabilities = dict(zip(alphabet,probabilities)) #ordered
        usable_probabilities = accumulate_normalize_values(probabilities)
        gen = []
        while len(gen) < length:
                gen.append(select(usable_probabilities,random()))
        return gen
5. Ví dụ tiếp theo tạo ra một mảng chứa 10 phao ngẫu nhiên.

Out[ ]:

array([0.91394253, 0.80736524, 0.21402387, 0.86334362, 0.75628216,
       0.18238176, 0.37567793, 0.36385296, 0.39890072, 0.78487536])

Để tạo ra một mảng đa chiều của các giá trị ngẫu nhiên, chỉ cần truyền một bộ tuple hình dạng thay vì số nguyên cho tham số kích thước. Ví dụ này tạo ra 2 chiều với 3 hàng và 2 cột nổi ngẫu nhiên.

Out[ ]:

array([[0.46270073, 0.21953817],
       [0.57626831, 0.72370476],
       [0.02004972, 0.65277897]])

Gieo hạt cho khả năng tái sản xuất

Có những lúc bạn có thể muốn tạo một số ngẫu nhiên cho một đoạn mã, nhưng giữ số đó giống nhau để mã sao chép cùng một đầu ra. Đây là một nhu cầu phổ biến khi kiểm tra mã và thuật toán. Nếu bạn chạy mã ở trên một lần nữa (bằng cách chạy tập lệnh của bạn hoặc khởi động lại sổ ghi chép của bạn), bạn sẽ nhận thấy rằng mã vẫn tạo ra các số ngẫu nhiên, nhưng chúng là các số khác với được sản xuất lần cuối cùng bạn chạy nó.

Nếu bạn cần số lượng để giữ nguyên cho mục đích thử nghiệm, điều này có thể có vấn đề. Nhưng đừng lo lắng, có một cách để có được mã của bạn để tạo cùng một số ngẫu nhiên mỗi lần.

Cách để có được mã python của bạn để tạo ra cùng một số ngẫu nhiên mỗi lần chạy là gieo hạt trình tạo số ngẫu nhiên khi nó được tạo. Để gieo hạt, chỉ cần truyền một số nguyên (ví dụ

>>> accumulate_normalize_values( { 'a': 100, 'b' : 300, 'c' : 400, 'd' : 200  } )
[('a', 0.1), ('c', 0.5), ('b', 0.8), ('d', 1.0)]
8 sử dụng số nguyên 5 chữ số nhưng nó không phải là 5 chữ số) khi bạn tạo trình tạo. Như vậy.

In [ ]:

rng_seed = np.random.default_rng(12345)
rng_seed.random()

Lưu ý rằng nếu bạn chạy tập lệnh này một lần nữa (hoặc khởi động lại sổ ghi chép). Cùng một số ngẫu nhiên sẽ được sản xuất. Nó có vẻ hơi phản trực giác để khóa một số ngẫu nhiên như thế này (tại sao không xác định một biến có số đã đặt?), Nhưng nó làm cho mã trong suốt và cho thấy một số ngẫu nhiên được tạo ra.

Số nguyên ngẫu nhiên

Chúng ta cũng có thể sử dụng

def select(symbol_intervals,random):
        print symbol_intervals,random
        i = 0
        while random > symbol_intervals[i][1]:
                i += 1
                if i >= len(symbol_intervals):
                        raise Exception( "What did you DO to that poor list?" )
        return symbol_intervals[i][0]


def gen_random(alphabet,length,probabilities=None):
        from random import random
        from itertools import repeat
        if probabilities is None:
                probabilities = dict(zip(alphabet,repeat(1.0)))
        elif len(probabilities) > 0 and isinstance(probabilities[0],(int,long,float)):
                probabilities = dict(zip(alphabet,probabilities)) #ordered
        usable_probabilities = accumulate_normalize_values(probabilities)
        gen = []
        while len(gen) < length:
                gen.append(select(usable_probabilities,random()))
        return gen
0 để tạo số nguyên ngẫu nhiên với Python. Lưu ý rằng tôi đã sử dụng cùng một phiên bản của
def select(symbol_intervals,random):
        print symbol_intervals,random
        i = 0
        while random > symbol_intervals[i][1]:
                i += 1
                if i >= len(symbol_intervals):
                        raise Exception( "What did you DO to that poor list?" )
        return symbol_intervals[i][0]


def gen_random(alphabet,length,probabilities=None):
        from random import random
        from itertools import repeat
        if probabilities is None:
                probabilities = dict(zip(alphabet,repeat(1.0)))
        elif len(probabilities) > 0 and isinstance(probabilities[0],(int,long,float)):
                probabilities = dict(zip(alphabet,probabilities)) #ordered
        usable_probabilities = accumulate_normalize_values(probabilities)
        gen = []
        while len(gen) < length:
                gen.append(select(usable_probabilities,random()))
        return gen
0 được tạo ra ở đầu sổ ghi chép này.

Bây giờ, tôi sẽ sử dụng phương thức

>>> gen_random (['a','b','c','d'],10,[100,300,400,200])
['d', 'b', 'b', 'a', 'c', 'c', 'b', 'c', 'c', 'c']   #<--- some of the time
0 để tạo số nguyên ngẫu nhiên. Với phương thức
>>> gen_random (['a','b','c','d'],10,[100,300,400,200])
['d', 'b', 'b', 'a', 'c', 'c', 'b', 'c', 'c', 'c']   #<--- some of the time
0, bạn sẽ cần chỉ định giá trị
>>> gen_random (['a','b','c','d'],10,[100,300,400,200])
['d', 'b', 'b', 'a', 'c', 'c', 'b', 'c', 'c', 'c']   #<--- some of the time
2 (bao gồm) và
>>> gen_random (['a','b','c','d'],10,[100,300,400,200])
['d', 'b', 'b', 'a', 'c', 'c', 'b', 'c', 'c', 'c']   #<--- some of the time
3 (độc quyền) giữa để tạo số nguyên. Dưới đây, tôi tạo ra một số ngẫu nhiên lớn hơn 0 nhỏ hơn 10.

Để tạo ra một mảng các số nguyên ngẫu nhiên trong Python, hãy sử dụng phương thức

>>> gen_random (['a','b','c','d'],10,[100,300,400,200])
['d', 'b', 'b', 'a', 'c', 'c', 'b', 'c', 'c', 'c']   #<--- some of the time
0 và chỉ định đối số
>>> gen_random (['a','b','c','d'],10,[100,300,400,200])
['d', 'b', 'b', 'a', 'c', 'c', 'b', 'c', 'c', 'c']   #<--- some of the time
5. Mã bên dưới tạo ra một mảng gồm 10 số nguyên ngẫu nhiên giữa các giá trị 0 và 10.

In [ ]:

rng.integers(low=0, high=10, size=10)

Out[ ]:

array([8, 0, 7, 3, 5, 7, 2, 7, 8, 6], dtype=int64)

Số ngẫu nhiên từ phân phối thống kê

Với

def select(symbol_intervals,random):
        print symbol_intervals,random
        i = 0
        while random > symbol_intervals[i][1]:
                i += 1
                if i >= len(symbol_intervals):
                        raise Exception( "What did you DO to that poor list?" )
        return symbol_intervals[i][0]


def gen_random(alphabet,length,probabilities=None):
        from random import random
        from itertools import repeat
        if probabilities is None:
                probabilities = dict(zip(alphabet,repeat(1.0)))
        elif len(probabilities) > 0 and isinstance(probabilities[0],(int,long,float)):
                probabilities = dict(zip(alphabet,probabilities)) #ordered
        usable_probabilities = accumulate_normalize_values(probabilities)
        gen = []
        while len(gen) < length:
                gen.append(select(usable_probabilities,random()))
        return gen
0, chúng tôi cũng có thể sử dụng Python để tạo số ngẫu nhiên từ một số phân phối thống kê khác nhau. Chức năng này rất hữu ích và ngăn bạn tạo ra nhiều mã bổ sung cho việc tạo số ngẫu nhiên. Một số phân phối thống kê mà bạn tạo ra các số ngẫu nhiên từ
>>> accumulate_normalize_values( { 'a': 100, 'b' : 300, 'c' : 400, 'd' : 200  } )
[('a', 0.1), ('c', 0.5), ('b', 0.8), ('d', 1.0)]
8 là beta, nhị thức, chisquare, theo cấp số nhân, gamma, logistic, lognator, poison, power, đồng nhất, wald, weibull, và bình thường (tất nhiên). Bạn có thể xem nhiều phân phối có sẵn trong tài liệu.

Hãy bắt đầu với một ví dụ bằng cách sử dụng phân phối bình thường tiêu chuẩn. Phân phối bình thường tiêu chuẩn chỉ đơn giản là phân phối bình thường với trung bình 0,0 và độ lệch chuẩn là 1.0.

Chúng ta có thể tạo ra một giá trị ngẫu nhiên duy nhất từ ​​phân phối bình thường tiêu chuẩn như sau.

Bây giờ, hãy để âm mưu phân phối một mẫu lớn hơn để thấy rằng nó tuân theo phân phối. Đầu tiên, nhập

>>> gen_random (['a','b','c','d'],10,[100,300,400,200])
['d', 'b', 'b', 'a', 'c', 'c', 'b', 'c', 'c', 'c']   #<--- some of the time
8.

In [ ]:

>>> accumulate_normalize_values( { 'a': 100, 'b' : 300, 'c' : 400, 'd' : 200  } )
[('a', 0.1), ('c', 0.5), ('b', 0.8), ('d', 1.0)]
0

Hãy để tạo ra 1.000 số ngẫu nhiên từ phân phối bình thường tiêu chuẩn và vẽ biểu đồ.

In [ ]:

>>> accumulate_normalize_values( { 'a': 100, 'b' : 300, 'c' : 400, 'd' : 200  } )
[('a', 0.1), ('c', 0.5), ('b', 0.8), ('d', 1.0)]
1

Out[ ]:

>>> accumulate_normalize_values( { 'a': 100, 'b' : 300, 'c' : 400, 'd' : 200  } )
[('a', 0.1), ('c', 0.5), ('b', 0.8), ('d', 1.0)]
2

Như bạn có thể thấy, chúng tôi nhận được biểu đồ với phân phối bình thường tập trung ở mức 0,0. Để tạo các số ngẫu nhiên từ các phân phối khác, bạn chỉ cần chỉ định các tham số phân phối (thường là trung bình/trung tâm và phương sai). Tôi sẽ chứng minh với sự phân phối bình thường.

Ví dụ trước đã chứng minh phân phối bình thường tiêu chuẩn, được sử dụng rộng rãi. Nếu chúng ta muốn lấy các số ngẫu nhiên từ một phân phối bình thường với một giá trị trung bình và phương sai khác, chúng ta chỉ cần sử dụng hàm

>>> gen_random (['a','b','c','d'],10,[100,300,400,200])
['d', 'b', 'b', 'a', 'c', 'c', 'b', 'c', 'c', 'c']   #<--- some of the time
9. Hãy để tạo ra và vẽ 1.000 số ngẫu nhiên từ phân phối bình thường với trung bình 12.0 và phương sai 3.5. Lưu ý rằng
>>> gen_random (['a','b','c','d'],10,[100,300,400,200])
['d', 'b', 'b', 'a', 'c', 'c', 'b', 'c', 'c', 'c']   #<--- some of the time
5, có bao nhiêu số ngẫu nhiên để tạo (1.000), là đối số cuối cùng được thông qua.

In [ ]:

>>> accumulate_normalize_values( { 'a': 100, 'b' : 300, 'c' : 400, 'd' : 200  } )
[('a', 0.1), ('c', 0.5), ('b', 0.8), ('d', 1.0)]
3

Out[ ]:

>>> accumulate_normalize_values( { 'a': 100, 'b' : 300, 'c' : 400, 'd' : 200  } )
[('a', 0.1), ('c', 0.5), ('b', 0.8), ('d', 1.0)]
4

Hãy cùng làm một cuộc biểu tình nữa bằng cách sử dụng phân phối theo cấp số nhân. Phân phối theo cấp số nhân có một tham số tỷ lệ duy nhất. Chúng tôi sẽ chỉ định tham số tỷ lệ và tạo 10.000 giá trị ngẫu nhiên.

In [ ]:

>>> accumulate_normalize_values( { 'a': 100, 'b' : 300, 'c' : 400, 'd' : 200  } )
[('a', 0.1), ('c', 0.5), ('b', 0.8), ('d', 1.0)]
5

Out[ ]:

>>> accumulate_normalize_values( { 'a': 100, 'b' : 300, 'c' : 400, 'd' : 200  } )
[('a', 0.1), ('c', 0.5), ('b', 0.8), ('d', 1.0)]
6

Sự kết luận

Numpy cung cấp rất nhiều chức năng để tạo số ngẫu nhiên trong Python. Ngoài ra, nó là nhanh chóng và dễ sử dụng. Hướng dẫn này đã khám phá và chứng minh những điều cơ bản của việc tạo số ngẫu nhiên trong Python. Tiếp tục học và khám phá những ý tưởng này bằng cách phát triển các ứng dụng và dự án của riêng bạn!

Konrad Hafen

Konrad là một nhà khoa học tài nguyên thiên nhiên. Ông phát triển các mô hình và phân tích quy trình công việc để dự đoán và đánh giá các thay đổi đối với cảnh quan và tài nguyên nước.

Hướng dẫn mới nhất

Liên kết đến phân loại hình ảnh không giám sát với QGIS

Phân loại hình ảnh không giám sát với QGIS

Một hình ảnh phân chia trong đó nửa dưới hiển thị hình ảnh Landsat 9 với màu thật và hình ảnh trên cùng cho thấy kết quả phân loại không được giám sát. Phân loại hình ảnh là quá trình sử dụng số ...

Liên kết đến cách tải xuống hình ảnh Landsat và Sentinel miễn phí

Làm thế nào để bạn tạo ra một số ngẫu nhiên từ một phân phối nhất định?

Có lẽ cách chung nhất để làm như vậy được gọi là lấy mẫu biến đổi nghịch đảo: tạo số ngẫu nhiên thống nhất trong [0, 1].Chạy hàm lượng tử (còn được gọi là CDF nghịch đảo hoặc PPF) trên số ngẫu nhiên thống nhất.Kết quả là một số ngẫu nhiên phù hợp với phân phối.inverse transform sampling: Generate a uniform random number in [0, 1]. Run the quantile function (also known as the inverse CDF or the PPF) on the uniform random number. The result is a random number that fits the distribution.

Làm thế nào để Python ngẫu nhiên tạo ra các số ngẫu nhiên?

Các giá trị số nguyên ngẫu nhiên có thể được tạo với hàm randint ().Hàm này có hai đối số: bắt đầu và kết thúc phạm vi cho các giá trị số nguyên được tạo.Các số nguyên ngẫu nhiên được tạo ra trong và bao gồm bắt đầu và kết thúc các giá trị phạm vi, cụ thể là trong khoảng [bắt đầu, kết thúc].with the randint() function. This function takes two arguments: the start and the end of the range for the generated integer values. Random integers are generated within and including the start and end of range values, specifically in the interval [start, end].

Làm thế nào để bạn tạo ra một số ngẫu nhiên đơn giản trong Python?

Nhập ngẫu nhiên n = ngẫu nhiên.ngẫu nhiên () in (n).
Nhập ngẫu nhiên n = ngẫu nhiên.randint (0,22) in (n).
Nhập RandomList RandomList = [] cho i trong phạm vi (0,5): n = ngẫu nhiên.Randint (1,30) Danh sách ngẫu nhiên.....
Nhập ngẫu nhiên #Generate 5 Số ngẫu nhiên giữa 10 đến 30 RandomList = Random.Mẫu (phạm vi (10, 30), 5) in (danh sách ngẫu nhiên).