Python mô-đun ngẫu nhiên

Mô-đun ngẫu nhiên Python là một mô-đun xây dựng sẵn của Python được sử dụng để tạo các số ngẫu nhiên. Đây là những con số giả ngẫu nhiên có nghĩa là chúng không thực sự ngẫu nhiên. Mô-đun này có thể được sử dụng để thực hiện các hành động ngẫu nhiên như tạo số ngẫu nhiên, trong giá trị ngẫu nhiên cho danh sách hoặc chuỗi, v. v

Các bài viết liên quan

  • Độ dốc màu CSS ngẫu nhiên
  • Rừng ngẫu nhiên trong R, hướng dẫn sử dụng trong R
  • Nút kiểu CSS ngẫu nhiên
  • Tự học html. Danh sách
  • Sử dụng List trong React

Ví dụ. In a Random value from list

# khai báo thư viện random
import random

# in random giá trị từ thanh phần
list1 = [1, 2, 3, 4, 5, 6]
print(random.choice(list1))

Như đã nêu ở trên, mô-đun ngẫu nhiên tạo ra các số giả ngẫu nhiên. Số ngẫu nhiên phụ thuộc vào giá trị seeding. Ví dụ. if the seeding value is 5, the head of the side show program will always same same nhau

Ví dụ. Tạo số ngẫu nhiên với giá trị gieo hạt

import random
#sử dụng seed bằng 5
random.seed(5)
print(random.random())
print(random.random())

Hãy thảo luận về một số biến hoạt động phổ biến được thực hiện bởi mô-đun này

Tóm tắt nội dung

Create a integer Random

phương thức ngẫu nhiên. randint() được sử dụng để tạo các số nguyên ngẫu nhiên trong phạm vi đã cho

cú pháp

randint(start, end)

Ví dụ. Create a integer Random

# hàm randint()
# nhập ngẫu nhiên mô-đun
import random

# Tạo một số ngẫu nhiên giữa
# một phạm vi tích cực nhất định
r1 = random.randint(5, 15)
print("Random number từ 5 đến 15 % s" % (r1))

# Tạo một số ngẫu nhiên giữa
# hai khoảng âm đã cho
r2 = random.randint(-10, -2)
print("Random number từ -10 đến -2 % d" % (r2))

Create number float random

phương thức ngẫu nhiên. random() used to make float random number in interval from 0,0 to 1

cú pháp

random.random()

Ví dụ

# khai báo thư viện random
from random import random
	
# xuất ra giá trị random
print(random())

Xem thêm Cấu hình dữ liệu Python

Chọn các phần tử ngẫu nhiên

Hàm ngẫu nhiên. choice() được sử dụng để trả về một mục ngẫu nhiên từ danh sách, bộ dữ liệu hoặc chuỗi

cú pháp

random.choice(sequence)

Ví dụ. Chọn các phần tử ngẫu nhiên từ danh sách, chuỗi và tuple

# khai báo thư viện random
import random

# in một giá trị ngẫu nhiên từ danh sách
list1 = [1, 2, 3, 4, 5, 6]
print(random.choice(list1))

# in một mục ngẫu nhiên từ chuỗi
string = "testing random"
print(random.choice(string))

# in một mục ngẫu nhiên từ bộ dữ liệu
tuple1 = (1, 2, 3, 4, 5)
print(random.choice(tuple1))

Xoá danh sách

phương thức ngẫu nhiên. shuffle() được sử dụng để trộn một chuỗi (danh sách). Sáp hợp nghĩa là thay đổi vị trí các phần tử của dãy. Ở đây, liên kết hoạt động đã được thực hiện

Mô-đun ngẫu nhiên và “bí mật”, bộ tạo số giả ngẫu nhiên mặc định của mô-đun ngẫu nhiên được thiết kế với sự quan tâm đến mô phỏng chứ không phải về bảo mật. Vì vậy, bạn không nên tạo ra các thông tin nhạy cảm như mật khẩu, mã thông báo bảo mật, phiên khóa và các thứ tự tương tự bằng cách sử dụng các hàm ngẫu nhiên đó, ví dụ các hàm cơ bản như "randint", "random" . Có một ngoại lệ và tôi sẽ đề cập đến trong giai đoạn tiếp theo. hệ thốngngẫu nhiên

Cảnh báo trong tài liệu python mà tôi muốn trích dẫn ở đây là. "Cảnh báo

Không nên sử dụng bộ tạo giả ngẫu nhiên của mô-đun này cho mục đích bảo mật. Để sử dụng bảo mật hoặc mật mã, hãy xem mô-đun. ”

Lớp SystemRandom cung cấp một cách thích hợp để vượt qua vấn đề bảo mật này. Các phương thức của lớp này sử dụng một bộ tạo ngẫu nhiên xen kẽ xen kẽ, sử dụng các công cụ được cung cấp bởi hệ điều hành (như /dev/urandom trên Unix hoặc CryptGenRandom trên Windows

Mối quan tâm lớn mà các nhà phát triển Python vô tình có thể làm cho lỗi bảo mật quan trọng, mặc dù các cảnh báo được chỉ rõ trong tài liệu, Python 3. 6 đi kèm với một mô-đun mới "bí mật" với CSPRNG (sử dụng Trình tạo số ngẫu nhiên giả)

Hãy bắt đầu bằng cách tạo các số float ngẫu nhiên với hàm ngẫu nhiên của mô-đun ngẫu nhiên. Hãy nhớ rằng nó không nên được sử dụng để tạo ra các thông tin cảm ứng

Trong bài viết này, tôi sẽ sử dụng thiết bị đầu cuối giao diện (CMD)

________số 8_______

Chúng ta sẽ đưa ra một cách tiếp cận khác và hoàn toàn trong ví dụ sau, khi đó chúng ta sẽ sử dụng lớp SystemRandom của mô-đun ngẫu nhiên. Nó sẽ sử dụng một bộ tạo ngẫu nhiên số khác, được cung cấp bởi hệ thống điều hành. Đây sẽ là /dev/urandom trên Unix và CryptGenRandom trên window. Phương pháp ngẫu nhiên của lớp SystemRandom tạo ra một số float trong khoảng từ [0,1. 0)

>>> from random import SystemRandom

>>> crypto = SystemRandom()

>>> print(crypto.random())

0.741553529075

>>>

Sinh ngẫu nhiên một danh sách các số trong python

Không quan tâm đến vấn đề bảo mật ta có thể sử dụng ngẫu nhiên trong gói ngẫu nhiên. Để có nhiều tùy chọn, tôi sẽ minh họa bằng hàm ngẫu nhiên trong thư viện numpy. Cú pháp như sau

cục mịch. ngẫu nhiên. randint (thấp, cao=Không, kích thước=Không, dtype=’l’)

in which

Kích thước là hình dạng của mảng kết quả có kiểu int hoặc tuple of ints. Mặc định là Không tương ứng với kết quả trả về có 1 phần tử

Dtype là kiểu của kết quả trả về (ví dụ. ‘int64’, ‘int’,…). Giá trị mặc định là ‘np. int'

Hàm trên sẽ trả về một danh sách các số nguyên ngẫu nhiên trong nửa khoảng [low,high) có chiều là kích thước. If higt is None thì khoảng ngẫu nhiên là [0, thấp)

Các bạn có thể theo dõi ví dụ bên dưới để hiểu rõ hơn

>>> import numpy as np

>>> np.random.random(10)

array([ 0.38512197,  0.01572542,  0.25035755,  0.53453149,  0.60234844,

        0.10175073,  0.44585687,  0.84354704,  0.01282373,  0.87865167])

>>> #sinh danh sach so nguyen trong khoang nho hon 100

...

>>> np.random.randint(100,size=10)

array([86, 17,  2, 77,  9, 20, 68,  0, 81, 53])

>>> np.random.randint(100,size=(10,2))

array([[34, 94],

       [ 9, 85],

       [51, 32],

       [58, 90],

       [20, 93],

       [30, 86],

       [ 2, 95],

       [10, 42],

       [75, 64],

       [74, 22]])

Khi quan tâm đến vấn đề bảo mật, ta cần gọi liên tục SystemRandom()

>>> list([random.SystemRandom().random() for i in range(10)])

[0.10045004100519428, 0.8105229864919358, 0.5116013716283684, 0.6125839506294763, 0.4936838066464031, 0.7739209793710309, 0.5981480525512537, 0.9298128234257795, 0.6222901773820315, 0.430057589525366]

>>>

Sinh ra một danh sách các số ngẫu nhiên trong giai điệu tổng hợp

Ví dụ như tổng các số đó bằng 1 như sau

>>> x = np.random.random(100)

>>> sum_of_x = sum(x)

>>> x = x/sum_of_x

>>> x

array([ 0.00681564,  0.00046032,  0.01555603,  0.01224856,  0.00824919,

        0.01844947,  0.00083868,  0.0187569 ,  0.01903362,  0.00095173,

        0.01801133,  0.01398661,  0.00564896,  0.00453737,  0.00762683,

        0.00639701,  0.01631088,  0.017837  ,  0.01903103,  0.01525394,

        0.00484442,  0.00264082,  0.01540946,  0.00562404,  0.00364663,

        0.01544763,  0.01822115,  0.00781301,  0.00603914,  0.00109898,

        0.00931398,  0.00764734,  0.00931861,  0.01629682,  0.01827744,

        0.01945222,  0.01059581,  0.00463923,  0.00955128,  0.00209377,

        0.00388371,  0.00695361,  0.00980641,  0.01647755,  0.01483753,

        0.00036168,  0.00897731,  0.00761304,  0.00397424,  0.01893571,

        0.00254276,  0.00374991,  0.01700657,  0.00504006,  0.00858757,

        0.01841522,  0.015517  ,  0.01980629,  0.01366108,  0.00049385,

        0.01395694,  0.00255102,  0.00427743,  0.01510116,  0.01188987,

        0.01068046,  0.00502589,  0.00328158,  0.01415927,  0.00665739,

        0.01296565,  0.0183652 ,  0.00731404,  0.00619696,  0.01836427,

        0.00142202,  0.01575556,  0.00044663,  0.01250287,  0.00770227,

        0.01655119,  0.00016539,  0.01225387,  0.01818291,  0.00024227,

        0.01566063,  0.01052128,  0.01125321,  0.01673902,  0.01606259,

        0.00946126,  0.01469521,  0.00483952,  0.01250304,  0.00371621,

        0.002107  ,  0.0114111 ,  0.0089728 ,  0.00191371,  0.01351734])

>>> sum(x)

1.0000000000000004

>>>

Random option of the element in a list

Chúng ta có thể chọn một ký tự ngẫu nhiên ngẫu nhiên từ một chuỗi hoặc một phần tử ngẫu nhiên từ danh sách hoặc một tuple, chúng ta có thể tìm thấy trong các ví dụ sau đây. Ví dụ. bạn muốn có một chuyến đi trong thành phố Châu Âu và bạn không thể quyết định đi đâu?

>>> from random import choice

>>> possible_destinations = ["Berlin", "Hamburg", "Munich",

...                          "Amsterdam", "London", "Paris",

...                          "Zurich", "Heidelberg", "Strasbourg",

...                          "Augsburg", "Milan", "Rome"]

>>> print(choice(possible_destinations))

Zurich

Hàm choice() của gói ngẫu nhiên thuộc mô-đun numpy thuận tiện hơn, bởi vì nó cung cấp thêm nhiều tùy chọn

Khi gọi hàm mặc định, tức là không có tham số bổ sung được sử dụng, hoạt động giống như sự lựa chọn() của mô-đun ngẫu nhiên

>>> from numpy.random import choice

>>> print(choice(possible_destinations))

Rome

Use tham số size cho phép chúng ta có thể chọn ngẫu nhiên một numpy. ndarray from the value file has shape mong muốn

>>> print(choice(possible_destinations,size=(3,3)))

[['Zurich' 'Paris' 'Hamburg']

 ['Amsterdam' 'Hamburg' 'Strasbourg']

 ['Milan' 'Milan' 'Rome']]

>>>

Tuy nhiên, bạn có thể nhận thấy nếu chỉ sử dụng tham số “size” thì các phần tử của numpy. ndarray  trả về có thể được thiết lập lại như ví dụ phía trên (giá trị 'Hamburg' được trả lại hai lần), và có một số tham số có thể giúp giải quyết vấn đề đó. Use replace=False, as ví dụ dưới đây

>>> print(choice(possible_destinations,size=(3,3),replace=False))
[['Strasbourg' 'Hamburg' 'London']
 ['Paris' 'Rome' 'Augsburg']
 ['Heidelberg' 'Zurich' 'Amsterdam']]
>>>
MORE POWERFUL!!!!
>>> from random import SystemRandom

>>> crypto = SystemRandom()

>>> print(crypto.random())

0.741553529075

>>>
0

Một mẫu có thể hiểu là một đại diện từ một nhóm lớn hơn, thường được gọi là "dân số"
Mô-đun numpy. random chứa hàm random_sample(), nó trả về các float ngẫu nhiên trong khoảng mở nửa [0. 0, 1. 0). Kết quả trả lời theo phân bố đều trong khoảng đã nêu. Hàm này chỉ lấy một tham số "kích thước", định nghĩa hình dạng đầu ra. ví dụ, nếu chúng ta đặt size = (3, 4), chúng ta sẽ nhận được một mảng có hình dạng (3, 4) là các phần tử ngẫu nhiên

>>> from random import SystemRandom

>>> crypto = SystemRandom()

>>> print(crypto.random())

0.741553529075

>>>
1
>>> from random import SystemRandom

>>> crypto = SystemRandom()

>>> print(crypto.random())

0.741553529075

>>>
2
>>> from random import SystemRandom

>>> crypto = SystemRandom()

>>> print(crypto.random())

0.741553529075

>>>
3

Hạt giống ngẫu nhiên

Một hạt giống ngẫu nhiên, còn được gọi là "trạng thái hạt giống", hoặc chỉ là "hạt giống" - là một số được sử dụng để khởi tạo một bộ sinh mã ngẫu nhiên giả. Khi chúng ta gọi ngẫu nhiên. random(), chúng ta đã mong đợi và có một số ngẫu nhiên giữa 0 và 1. ngẫu nhiên. random() tính một số ngẫu nhiên mới bằng cách sử dụng số ngẫu nhiên được sinh ra trước đó. Lần đầu tiên chúng ta sử dụng ngẫu nhiên trong chương trình của chúng ta là gì? . Nếu một bộ sinh ngẫu nhiên máy được gọi lần đầu tiên, nó sẽ phải tạo ra một số "ngẫu nhiên" đầu tiên

Nếu chúng ta gieo bộ sinh ngẫu nhiên, chúng ta cung cấp một giá trị trước giá trị đầu tiên. Seed value tương ứng với một dãy các giá trị được tạo ra cho một bộ tạo số ngẫu nhiên nhất định. Nếu bạn sử dụng cùng một hạt giống giá trị một lần nữa, bạn sẽ có được hoặc nhận được cùng một chuỗi số một lần nữa

Hạt giống bản thân, nó không cần thiết phải được chọn ngẫu nhiên sao cho thuật toán tạo ra các giá trị theo một định mức ngẫu nhiên theo cách ngẫu nhiên. Tuy nhiên, seed back là vấn đề ở cạnh bảo mật. Nếu bạn biết hạt giống, ví dụ bạn có thể tạo ra khóa mật mã dựa trên hạt giống này

Các hạt giống ngẫu nhiên được tạo ra từ trạng thái của hệ thống máy tính trong ngôn ngữ lập trình ngôn ngữ, nhiều trường hợp lại chính là thời gian hệ thống

Điều này đúng với Python. Help about Random. seed nói rằng nếu bạn gọi hàm với đối số “none” hoặc không có đối số thì nó sẽ sinh ra seed "từ thời điểm hiện tại hoặc từ một nguồn ngẫu nhiên riêng biệt của hệ thống điều hành nếu có. "

>>> from random import SystemRandom

>>> crypto = SystemRandom()

>>> print(crypto.random())

0.741553529075

>>>
4
>>> from random import SystemRandom

>>> crypto = SystemRandom()

>>> print(crypto.random())

0.741553529075

>>>
5_______9_______6
>>> from random import SystemRandom

>>> crypto = SystemRandom()

>>> print(crypto.random())

0.741553529075

>>>
7

Ví dụ. Chúng ta muốn tạo 1000 số ngẫu nhiên giữa 130 và 230 có phân bố gaussian với giá trị trung bình mu thiết lập là 180 và tốc độ trục sigma là 30.  

>>> from random import SystemRandom

>>> crypto = SystemRandom()

>>> print(crypto.random())

0.741553529075

>>>
8
>>> from random import SystemRandom

>>> crypto = SystemRandom()

>>> print(crypto.random())

0.741553529075

>>>
9
>>> import numpy as np

>>> np.random.random(10)

array([ 0.38512197,  0.01572542,  0.25035755,  0.53453149,  0.60234844,

        0.10175073,  0.44585687,  0.84354704,  0.01282373,  0.87865167])

>>> #sinh danh sach so nguyen trong khoang nho hon 100

...

>>> np.random.randint(100,size=10)

array([86, 17,  2, 77,  9, 20, 68,  0, 81, 53])

>>> np.random.randint(100,size=(10,2))

array([[34, 94],

       [ 9, 85],

       [51, 32],

       [58, 90],

       [20, 93],

       [30, 86],

       [ 2, 95],

       [10, 42],

       [75, 64],

       [74, 22]])
0
>>> import numpy as np

>>> np.random.random(10)

array([ 0.38512197,  0.01572542,  0.25035755,  0.53453149,  0.60234844,

        0.10175073,  0.44585687,  0.84354704,  0.01282373,  0.87865167])

>>> #sinh danh sach so nguyen trong khoang nho hon 100

...

>>> np.random.randint(100,size=10)

array([86, 17,  2, 77,  9, 20, 68,  0, 81, 53])

>>> np.random.randint(100,size=(10,2))

array([[34, 94],

       [ 9, 85],

       [51, 32],

       [58, 90],

       [20, 93],

       [30, 86],

       [ 2, 95],

       [10, 42],

       [75, 64],

       [74, 22]])
1

Vì vậy, chúng tôi đã giới thiệu khá chi tiết về mô-đun Ngẫu nhiên trong Python. Mô-đun Ngẫu nhiên có chức năng chính là sinh ra các số ngẫu nhiên phục vụ cho công việc mô phỏng. Nếu bạn quan tâm đến vấn đề bảo mật thì nên sử dụng lớp SystemRandom của mô-đun ngẫu nhiên. Một số phương thức cơ bản, thường được sử dụng trong Ngẫu nhiên là randint() – tạo các số nguyên ngẫu nhiên; . Nếu muốn sử dụng nhiều tùy chọn hơn thì các bạn nên sử dụng mô-đun Ngẫu nhiên trong thư viện Numpy