Hướng dẫn python sleep random float - python ngủ nổi ngẫu nhiên

Tôi đã viết một chương trình gửi hơn 15 truy vấn cho Google trong mỗi lần lặp, tổng số lần lặp là khoảng 50. Để thử nghiệm, tôi phải chạy chương trình này nhiều lần. Tuy nhiên, bằng cách đó, sau nhiều lần, Google chặn tôi. Có cách nào để tôi có thể đánh lừa Google có thể bằng cách thêm sự chậm trễ giữa mỗi lần lặp không? Ngoài ra tôi đã nghe nói rằng Google thực sự có thể tìm hiểu dấu thời gian. Vì vậy, tôi cần những sự chậm trễ này là ngẫu nhiên để Google không thể tìm thấy một điều từ nó để tìm hiểu hành vi của tôi. Ngoài ra, nó nên ngắn để toàn bộ quá trình không mất nhiều. Có ai biết điều gì đó không, hoặc có thể cung cấp cho tôi một đoạn mã trong Python? Cảm ơn

Show

hỏi ngày 29 tháng 10 năm 2010 lúc 17:10Oct 29, 2010 at 17:10

Hướng dẫn python sleep random float - python ngủ nổi ngẫu nhiên

4

Đầu tiên, Google có thể chặn bạn vì họ không thích nó khi bạn lấy quá nhiều tài nguyên của họ. Cách tốt nhất để khắc phục điều này là làm chậm nó, không trì hoãn ngẫu nhiên. Dán chờ 1 giây sau mỗi yêu cầu và có lẽ bạn sẽ ngừng gặp vấn đề.

Mà nói:

from random import randint
from time import sleep

sleep(randint(10,100))

Sẽ ngủ một số giây ngẫu nhiên (từ 10 đến 100).

Đã trả lời ngày 29 tháng 10 năm 2010 lúc 17:22Oct 29, 2010 at 17:22

Nmichaelsnmichaelsnmichaels

48.4K12 Huy hiệu vàng102 Huy hiệu bạc134 Huy hiệu đồng12 gold badges102 silver badges134 bronze badges

4

Tốt nhất để sử dụng:

from numpy import random
from time import sleep

sleeptime = random.uniform(2, 4)
print("sleeping for:", sleeptime, "seconds")
sleep(sleeptime)
print("sleeping is over")

Khi bắt đầu và từ từ giảm phạm vi để xem những gì hoạt động tốt nhất (nhanh nhất).

Đã trả lời ngày 31 tháng 8 năm 2020 lúc 12:23Aug 31, 2020 at 12:23

Hướng dẫn python sleep random float - python ngủ nổi ngẫu nhiên

HrvojehrvojeHrvoje

Huy hiệu vàng 11.8K676 Huy hiệu bạc90 Huy hiệu đồng6 gold badges76 silver badges90 bronze badges

Vì bạn không kiểm tra tốc độ của Google, hãy tìm ra một số cách để mô phỏng nó khi thực hiện thử nghiệm của bạn (như @bstpierre đã đề xuất trong nhận xét của anh ấy). Điều này sẽ giải quyết vấn đề của bạn và yếu tố phản hồi biến của nó cùng một lúc.

Đã trả lời ngày 29 tháng 10 năm 2010 lúc 18:06Oct 29, 2010 at 18:06

Hướng dẫn python sleep random float - python ngủ nổi ngẫu nhiên

Martineaumartineaumartineau

Huy hiệu vàng 116K2525 gold badges161 silver badges288 bronze badges

Ngoài ra, bạn có thể cố gắng sử dụng một vài máy chủ proxy để ngăn chặn lệnh cấm bằng ip. Urllib hỗ trợ proxy bởi tham số hàm tạo đặc biệt, httplib cũng có thể sử dụng proxy

Đã trả lời ngày 29 tháng 10 năm 2010 lúc 18:57Oct 29, 2010 at 18:57

SERIYPSSERIYPSseriyPS

6.5772 Huy hiệu vàng24 Huy hiệu bạc16 Huy hiệu đồng2 gold badges24 silver badges16 bronze badges

Đối với bất kỳ ai vấp ngã ở đây cho trường hợp "Cách thêm độ trễ ngẫu nhiên vào thói quen của tôi" vào năm 2022, phương thức được đề xuất của Numpy [1] là sử dụng lớp tạo số ngẫu nhiên của họ:

from numpy.random import default_rng
from time import sleep

rng = default_rng()

# generates a scalar [single] value greater than or equal to 1
# but less than 3
time_to_sleep = rng.uniform(1, 3)

sleep(time_to_sleep)

[1] https://numpy.org/doc/stable/reference/random/index.html#quick-start

Đã trả lời ngày 17 tháng 5 lúc 2:42May 17 at 2:42

JustinjustinJustin

4808 Huy hiệu bạc17 Huy hiệu đồng8 silver badges17 bronze badges

Xem bây giờ hướng dẫn này có một khóa học video liên quan được tạo bởi nhóm Python thực sự. Xem cùng với hướng dẫn bằng văn bản để hiểu sâu hơn về sự hiểu biết của bạn: Tạo dữ liệu ngẫu nhiên trong Python This tutorial has a related video course created by the Real Python team. Watch it together with the written tutorial to deepen your understanding: Generating Random Data in Python

Làm thế nào ngẫu nhiên là ngẫu nhiên? Đây là một câu hỏi kỳ lạ để hỏi, nhưng nó là một trong những tầm quan trọng tối quan trọng trong trường hợp có liên quan đến bảo mật thông tin. Bất cứ khi nào bạn tạo ra dữ liệu, chuỗi hoặc số ngẫu nhiên trong Python, thì một ý tưởng tốt là có ít nhất một ý tưởng sơ bộ về cách tạo dữ liệu đó.

Tại đây, bạn sẽ bao gồm một số ít các tùy chọn khác nhau để tạo dữ liệu ngẫu nhiên trong Python, và sau đó xây dựng để so sánh từng loại về mức độ bảo mật, tính linh hoạt, mục đích và tốc độ của nó.

Tôi hứa rằng hướng dẫn này sẽ không phải là một bài học về toán học hay mật mã, mà tôi sẽ được trang bị tốt để giảng bài ngay từ đầu. Bạn sẽ nhận được nhiều môn toán như cần thiết, và không còn nữa.

Làm thế nào ngẫu nhiên là ngẫu nhiên?

Đầu tiên, một từ chối trách nhiệm nổi bật là cần thiết. Hầu hết dữ liệu ngẫu nhiên được tạo ra với Python không hoàn toàn ngẫu nhiên theo nghĩa khoa học của từ này. Thay vào đó, nó là giả: được tạo bằng trình tạo số giả (PRNG), về cơ bản là bất kỳ thuật toán nào để tạo dữ liệu dường như ngẫu nhiên nhưng vẫn có thể tái tạo.pseudorandom: generated with a pseudorandom number generator (PRNG), which is essentially any algorithm for generating seemingly random but still reproducible data.

Các số ngẫu nhiên của True True có thể được tạo bởi, bạn đoán nó, một trình tạo số ngẫu nhiên thực sự (TRNG). Một ví dụ là nhiều lần nhặt một cái chết trên sàn nhà, ném nó lên không trung và để nó hạ cánh như thế nào.

Giả sử rằng cú ném của bạn không thiên vị, bạn thực sự không biết cái chết sẽ hạ cánh trên số nào. Cuộn một cái chết là một hình thức thô của việc sử dụng phần cứng để tạo ra một số không xác định. .

PRNG, thường được thực hiện với phần mềm thay vì phần cứng, hoạt động hơi khác nhau. Ở đây, một mô tả ngắn gọn:

Chúng bắt đầu với một số ngẫu nhiên, được gọi là hạt giống, và sau đó sử dụng một thuật toán để tạo ra một chuỗi các bit giả ngẫu nhiên dựa trên nó. (Nguồn)

Bạn có thể đã được nói với những người đọc các tài liệu! ở một điểm nào đó. Vâng, những người đó không sai. Ở đây, một đoạn trích đặc biệt đáng chú ý từ tài liệu mô -đun

class NotSoRandom(object):
    def seed(self, a=3):
        """Seed the world's most mysterious random number generator."""
        self.seedval = a
    def random(self):
        """Look, random numbers!"""
        self.seedval = (self.seedval * 3) % 19
        return self.seedval

_inst = NotSoRandom()
seed = _inst.seed
random = _inst.random
5 mà bạn không muốn bỏ lỡ:

CẢNH BÁO: Không nên sử dụng các trình tạo giả ngẫu nhiên của mô-đun này cho mục đích bảo mật. (Nguồn): The pseudo-random generators of this module should not be used for security purposes. (Source)

Bạn có thể đã nhìn thấy

class NotSoRandom(object):
    def seed(self, a=3):
        """Seed the world's most mysterious random number generator."""
        self.seedval = a
    def random(self):
        """Look, random numbers!"""
        self.seedval = (self.seedval * 3) % 19
        return self.seedval

_inst = NotSoRandom()
seed = _inst.seed
random = _inst.random
6,
class NotSoRandom(object):
    def seed(self, a=3):
        """Seed the world's most mysterious random number generator."""
        self.seedval = a
    def random(self):
        """Look, random numbers!"""
        self.seedval = (self.seedval * 3) % 19
        return self.seedval

_inst = NotSoRandom()
seed = _inst.seed
random = _inst.random
7, hoặc tương tự, trong Python. Cuộc gọi chức năng này đang gieo hạt Trình tạo số ngẫu nhiên cơ bản được sử dụng bởi mô -đun Python từ
class NotSoRandom(object):
    def seed(self, a=3):
        """Seed the world's most mysterious random number generator."""
        self.seedval = a
    def random(self):
        """Look, random numbers!"""
        self.seedval = (self.seedval * 3) % 19
        return self.seedval

_inst = NotSoRandom()
seed = _inst.seed
random = _inst.random
5. Đó là những gì thực hiện các cuộc gọi tiếp theo để tạo ra các số ngẫu nhiên xác định: Đầu vào A luôn tạo ra đầu ra B. Phước lành này cũng có thể là một lời nguyền nếu nó được sử dụng một cách độc hại.

Có lẽ các thuật ngữ ngẫu nhiên của người Hồi giáo và người xác định có vẻ như chúng không thể tồn tại bên cạnh nhau. Để làm cho điều đó rõ ràng hơn, ở đây, một phiên bản cực kỳ được cắt giảm của

class NotSoRandom(object):
    def seed(self, a=3):
        """Seed the world's most mysterious random number generator."""
        self.seedval = a
    def random(self):
        """Look, random numbers!"""
        self.seedval = (self.seedval * 3) % 19
        return self.seedval

_inst = NotSoRandom()
seed = _inst.seed
random = _inst.random
9 mà lặp đi lặp lại một số ngẫu nhiên của người Hồi giáo bằng cách sử dụng
>>> seed(1234)
>>> [random() for _ in range(10)]
[16, 10, 11, 14, 4, 12, 17, 13, 1, 3]

>>> seed(1234)
>>> [random() for _ in range(10)]
[16, 10, 11, 14, 4, 12, 17, 13, 1, 3]
0.
>>> seed(1234)
>>> [random() for _ in range(10)]
[16, 10, 11, 14, 4, 12, 17, 13, 1, 3]

>>> seed(1234)
>>> [random() for _ in range(10)]
[16, 10, 11, 14, 4, 12, 17, 13, 1, 3]
1 ban đầu được định nghĩa là giá trị hạt giống và sau đó biến thành một chuỗi số xác định dựa trên hạt giống đó:

class NotSoRandom(object):
    def seed(self, a=3):
        """Seed the world's most mysterious random number generator."""
        self.seedval = a
    def random(self):
        """Look, random numbers!"""
        self.seedval = (self.seedval * 3) % 19
        return self.seedval

_inst = NotSoRandom()
seed = _inst.seed
random = _inst.random

Don Tiết lấy ví dụ này theo nghĩa đen, vì nó có nghĩa là chủ yếu để minh họa cho khái niệm này. Nếu bạn sử dụng giá trị hạt giống 1234, chuỗi các cuộc gọi tiếp theo đến

class NotSoRandom(object):
    def seed(self, a=3):
        """Seed the world's most mysterious random number generator."""
        self.seedval = a
    def random(self):
        """Look, random numbers!"""
        self.seedval = (self.seedval * 3) % 19
        return self.seedval

_inst = NotSoRandom()
seed = _inst.seed
random = _inst.random
9 phải luôn giống hệt nhau:

>>>

>>> seed(1234)
>>> [random() for _ in range(10)]
[16, 10, 11, 14, 4, 12, 17, 13, 1, 3]

>>> seed(1234)
>>> [random() for _ in range(10)]
[16, 10, 11, 14, 4, 12, 17, 13, 1, 3]

Bạn sẽ thấy một minh họa nghiêm túc hơn về điều này trong thời gian ngắn.

Những gì là bảo mật về mặt mật mã học là gì?

Nếu bạn đã có đủ với các từ viết tắt của RNG RNG, hãy để Lừa ném thêm một bản vào hỗn hợp: CSPRNG hoặc PRNG an toàn bằng mã hóa. CSPRNGS phù hợp để tạo dữ liệu nhạy cảm như mật khẩu, trình xác thực và mã thông báo. Đưa ra một chuỗi ngẫu nhiên, thực tế không có cách nào để joe độc ​​hại để xác định chuỗi nào đến trước hoặc sau chuỗi đó theo một chuỗi các chuỗi ngẫu nhiên.

Một thuật ngữ khác mà bạn có thể thấy là entropy. Tóm lại, điều này đề cập đến số lượng ngẫu nhiên được giới thiệu hoặc mong muốn. Ví dụ: một mô -đun Python mà bạn sẽ bao gồm ở đây xác định

>>> seed(1234)
>>> [random() for _ in range(10)]
[16, 10, 11, 14, 4, 12, 17, 13, 1, 3]

>>> seed(1234)
>>> [random() for _ in range(10)]
[16, 10, 11, 14, 4, 12, 17, 13, 1, 3]
3, số lượng byte để trả về theo mặc định. Các nhà phát triển cho rằng đây là những người đủ điều kiện là một lượng lớn tiếng ồn.entropy. In a nutshell, this refers to the amount of randomness introduced or desired. For example, one Python module that you’ll cover here defines
>>> seed(1234)
>>> [random() for _ in range(10)]
[16, 10, 11, 14, 4, 12, 17, 13, 1, 3]

>>> seed(1234)
>>> [random() for _ in range(10)]
[16, 10, 11, 14, 4, 12, 17, 13, 1, 3]
3, the number of bytes to return by default. The developers deem this to be “enough” bytes to be a sufficient amount of noise.

Một điểm quan trọng về CSPRNGS là chúng vẫn còn giả. Chúng được thiết kế theo một cách nào đó có tính quyết định nội bộ, nhưng chúng thêm một số biến khác hoặc có một số tài sản làm cho chúng đủ ngẫu nhiên để cấm hỗ trợ vào bất kỳ chức năng nào thực thi chủ nghĩa quyết định.

Những gì bạn sẽ bao gồm ở đây

Trong các thuật ngữ thực tế, điều này có nghĩa là bạn nên sử dụng các PRNG đơn giản để mô hình hóa, mô phỏng và mô hình hóa thống kê có thể tái tạo dữ liệu ngẫu nhiên. Họ cũng nhanh hơn đáng kể so với CSPRNG, như bạn sẽ thấy sau này. Sử dụng CSPRNG cho các ứng dụng bảo mật và mật mã trong đó độ nhạy dữ liệu là bắt buộc.

Ngoài việc mở rộng các trường hợp sử dụng ở trên, trong hướng dẫn này, bạn sẽ đi sâu vào các công cụ Python để sử dụng cả PRNG và CSPRNGS:

  • Các tùy chọn PRNG bao gồm mô-đun
    class NotSoRandom(object):
        def seed(self, a=3):
            """Seed the world's most mysterious random number generator."""
            self.seedval = a
        def random(self):
            """Look, random numbers!"""
            self.seedval = (self.seedval * 3) % 19
            return self.seedval
    
    _inst = NotSoRandom()
    seed = _inst.seed
    random = _inst.random
    
    5 từ thư viện tiêu chuẩn Python và đối tác Numpy dựa trên mảng,
    >>> seed(1234)
    >>> [random() for _ in range(10)]
    [16, 10, 11, 14, 4, 12, 17, 13, 1, 3]
    
    >>> seed(1234)
    >>> [random() for _ in range(10)]
    [16, 10, 11, 14, 4, 12, 17, 13, 1, 3]
    
    5.
  • Các mô -đun Python từ
    >>> seed(1234)
    >>> [random() for _ in range(10)]
    [16, 10, 11, 14, 4, 12, 17, 13, 1, 3]
    
    >>> seed(1234)
    >>> [random() for _ in range(10)]
    [16, 10, 11, 14, 4, 12, 17, 13, 1, 3]
    
    6,
    >>> seed(1234)
    >>> [random() for _ in range(10)]
    [16, 10, 11, 14, 4, 12, 17, 13, 1, 3]
    
    >>> seed(1234)
    >>> [random() for _ in range(10)]
    [16, 10, 11, 14, 4, 12, 17, 13, 1, 3]
    
    7 và
    >>> seed(1234)
    >>> [random() for _ in range(10)]
    [16, 10, 11, 14, 4, 12, 17, 13, 1, 3]
    
    >>> seed(1234)
    >>> [random() for _ in range(10)]
    [16, 10, 11, 14, 4, 12, 17, 13, 1, 3]
    
    8 chứa các chức năng để tạo các đối tượng an toàn mật mã.

Bạn có thể chạm vào tất cả những điều trên và kết thúc với một so sánh cấp cao.

Prngs trong Python

Mô -đun class NotSoRandom(object): def seed(self, a=3): """Seed the world's most mysterious random number generator.""" self.seedval = a def random(self): """Look, random numbers!""" self.seedval = (self.seedval * 3) % 19 return self.seedval _inst = NotSoRandom() seed = _inst.seed random = _inst.random 5

Có lẽ công cụ được biết đến rộng rãi nhất để tạo dữ liệu ngẫu nhiên trong Python là mô -đun

class NotSoRandom(object):
    def seed(self, a=3):
        """Seed the world's most mysterious random number generator."""
        self.seedval = a
    def random(self):
        """Look, random numbers!"""
        self.seedval = (self.seedval * 3) % 19
        return self.seedval

_inst = NotSoRandom()
seed = _inst.seed
random = _inst.random
5 của nó, sử dụng thuật toán Mersenne Twister Prng làm trình tạo lõi của nó.

Trước đó, bạn đã chạm vào một thời gian ngắn trên

>>> # Don't call `random.seed()` yet
>>> import random
>>> random.random()
0.35553263284394376
>>> random.random()
0.6101992345575074
1, và bây giờ là thời điểm tốt để xem nó hoạt động như thế nào. Đầu tiên, hãy để xây dựng một số dữ liệu ngẫu nhiên mà không cần gieo hạt. Hàm
>>> # Don't call `random.seed()` yet
>>> import random
>>> random.random()
0.35553263284394376
>>> random.random()
0.6101992345575074
2 trả về một chiếc phao ngẫu nhiên trong khoảng [0,0, 1.0). Kết quả sẽ luôn luôn nhỏ hơn điểm cuối bên phải (1.0). Điều này còn được gọi là phạm vi bán mở:

>>>

>>> # Don't call `random.seed()` yet
>>> import random
>>> random.random()
0.35553263284394376
>>> random.random()
0.6101992345575074

Nếu bạn tự chạy mã này, tôi sẽ đặt cược tiết kiệm cuộc sống của mình rằng các số được trả lại trên máy của bạn sẽ khác. Mặc định khi bạn don hạt giống máy phát điện là sử dụng thời gian hệ thống hiện tại của bạn hoặc nguồn ngẫu nhiên của bạn từ hệ điều hành của bạn nếu có sẵn.

Với

>>> # Don't call `random.seed()` yet
>>> import random
>>> random.random()
0.35553263284394376
>>> random.random()
0.6101992345575074
1, bạn có thể tạo ra kết quả có thể tái tạo và chuỗi cuộc gọi sau
>>> # Don't call `random.seed()` yet
>>> import random
>>> random.random()
0.35553263284394376
>>> random.random()
0.6101992345575074
1 sẽ tạo ra cùng một dấu vết dữ liệu:

>>>

>>> random.seed(444)
>>> random.random()
0.3088946587429545
>>> random.random()
0.01323751590501987

>>> random.seed(444)  # Re-seed
>>> random.random()
0.3088946587429545
>>> random.random()
0.01323751590501987

Nếu bạn tự chạy mã này, tôi sẽ đặt cược tiết kiệm cuộc sống của mình rằng các số được trả lại trên máy của bạn sẽ khác. Mặc định khi bạn don hạt giống máy phát điện là sử dụng thời gian hệ thống hiện tại của bạn hoặc nguồn ngẫu nhiên của bạn từ hệ điều hành của bạn nếu có sẵn.

Với

>>> # Don't call `random.seed()` yet
>>> import random
>>> random.random()
0.35553263284394376
>>> random.random()
0.6101992345575074
1, bạn có thể tạo ra kết quả có thể tái tạo và chuỗi cuộc gọi sau
>>> # Don't call `random.seed()` yet
>>> import random
>>> random.random()
0.35553263284394376
>>> random.random()
0.6101992345575074
1 sẽ tạo ra cùng một dấu vết dữ liệu:

>>>

>>> random.randint(0, 10)
7
>>> random.randint(500, 50000)
18601

Nếu bạn tự chạy mã này, tôi sẽ đặt cược tiết kiệm cuộc sống của mình rằng các số được trả lại trên máy của bạn sẽ khác. Mặc định khi bạn don hạt giống máy phát điện là sử dụng thời gian hệ thống hiện tại của bạn hoặc nguồn ngẫu nhiên của bạn từ hệ điều hành của bạn nếu có sẵn.

>>>

>>> random.randrange(1, 10)
5

Nếu bạn tự chạy mã này, tôi sẽ đặt cược tiết kiệm cuộc sống của mình rằng các số được trả lại trên máy của bạn sẽ khác. Mặc định khi bạn don hạt giống máy phát điện là sử dụng thời gian hệ thống hiện tại của bạn hoặc nguồn ngẫu nhiên của bạn từ hệ điều hành của bạn nếu có sẵn.

>>>

>>> random.uniform(20, 30)
27.42639687016509
>>> random.uniform(30, 40)
36.33865802745107

Nếu bạn tự chạy mã này, tôi sẽ đặt cược tiết kiệm cuộc sống của mình rằng các số được trả lại trên máy của bạn sẽ khác. Mặc định khi bạn don hạt giống máy phát điện là sử dụng thời gian hệ thống hiện tại của bạn hoặc nguồn ngẫu nhiên của bạn từ hệ điều hành của bạn nếu có sẵn.

from numpy import random
from time import sleep

sleeptime = random.uniform(2, 4)
print("sleeping for:", sleeptime, "seconds")
sleep(sleeptime)
print("sleeping is over")
0

Với

>>> # Don't call `random.seed()` yet
>>> import random
>>> random.random()
0.35553263284394376
>>> random.random()
0.6101992345575074
1, bạn có thể tạo ra kết quả có thể tái tạo và chuỗi cuộc gọi sau
>>> # Don't call `random.seed()` yet
>>> import random
>>> random.random()
0.35553263284394376
>>> random.random()
0.6101992345575074
1 sẽ tạo ra cùng một dấu vết dữ liệu:

>>>

from numpy import random
from time import sleep

sleeptime = random.uniform(2, 4)
print("sleeping for:", sleeptime, "seconds")
sleep(sleeptime)
print("sleeping is over")
1

Nếu bạn tự chạy mã này, tôi sẽ đặt cược tiết kiệm cuộc sống của mình rằng các số được trả lại trên máy của bạn sẽ khác. Mặc định khi bạn don hạt giống máy phát điện là sử dụng thời gian hệ thống hiện tại của bạn hoặc nguồn ngẫu nhiên của bạn từ hệ điều hành của bạn nếu có sẵn.

>>>

from numpy import random
from time import sleep

sleeptime = random.uniform(2, 4)
print("sleeping for:", sleeptime, "seconds")
sleep(sleeptime)
print("sleeping is over")
2

Nếu bạn tự chạy mã này, tôi sẽ đặt cược tiết kiệm cuộc sống của mình rằng các số được trả lại trên máy của bạn sẽ khác. Mặc định khi bạn don hạt giống máy phát điện là sử dụng thời gian hệ thống hiện tại của bạn hoặc nguồn ngẫu nhiên của bạn từ hệ điều hành của bạn nếu có sẵn.

Với

>>> # Don't call `random.seed()` yet
>>> import random
>>> random.random()
0.35553263284394376
>>> random.random()
0.6101992345575074
1, bạn có thể tạo ra kết quả có thể tái tạo và chuỗi cuộc gọi sau
>>> # Don't call `random.seed()` yet
>>> import random
>>> random.random()
0.35553263284394376
>>> random.random()
0.6101992345575074
1 sẽ tạo ra cùng một dấu vết dữ liệu:

Lưu ý sự lặp lại của các số ngẫu nhiên của người Viking. Trình tự các số ngẫu nhiên trở thành xác định hoặc được xác định hoàn toàn bởi giá trị hạt giống, 444.

from numpy import random
from time import sleep

sleeptime = random.uniform(2, 4)
print("sleeping for:", sleeptime, "seconds")
sleep(sleeptime)
print("sleeping is over")
3

Hãy cùng xem một số chức năng cơ bản hơn của

class NotSoRandom(object):
    def seed(self, a=3):
        """Seed the world's most mysterious random number generator."""
        self.seedval = a
    def random(self):
        """Look, random numbers!"""
        self.seedval = (self.seedval * 3) % 19
        return self.seedval

_inst = NotSoRandom()
seed = _inst.seed
random = _inst.random
5. Ở trên, bạn tạo ra một chiếc phao ngẫu nhiên. Bạn có thể tạo một số nguyên ngẫu nhiên giữa hai điểm cuối trong Python với hàm
>>> # Don't call `random.seed()` yet
>>> import random
>>> random.random()
0.35553263284394376
>>> random.random()
0.6101992345575074
6. Điều này kéo dài khoảng [x, y] đầy đủ và có thể bao gồm cả hai điểm cuối:

Với

>>> # Don't call `random.seed()` yet
>>> import random
>>> random.random()
0.35553263284394376
>>> random.random()
0.6101992345575074
7, bạn có thể loại trừ phía bên phải của khoảng thời gian, có nghĩa là số được tạo luôn nằm trong [x, y) và sẽ luôn nhỏ hơn điểm cuối bên phải:

>>>

from numpy import random
from time import sleep

sleeptime = random.uniform(2, 4)
print("sleeping for:", sleeptime, "seconds")
sleep(sleeptime)
print("sleeping is over")
4

Nếu bạn tự chạy mã này, tôi sẽ đặt cược tiết kiệm cuộc sống của mình rằng các số được trả lại trên máy của bạn sẽ khác. Mặc định khi bạn don hạt giống máy phát điện là sử dụng thời gian hệ thống hiện tại của bạn hoặc nguồn ngẫu nhiên của bạn từ hệ điều hành của bạn nếu có sẵn.

Với >>> # Don't call `random.seed()` yet >>> import random >>> random.random() 0.35553263284394376 >>> random.random() 0.6101992345575074 1, bạn có thể tạo ra kết quả có thể tái tạo và chuỗi cuộc gọi sau >>> # Don't call `random.seed()` yet >>> import random >>> random.random() 0.35553263284394376 >>> random.random() 0.6101992345575074 1 sẽ tạo ra cùng một dấu vết dữ liệu:

Lưu ý sự lặp lại của các số ngẫu nhiên của người Viking. Trình tự các số ngẫu nhiên trở thành xác định hoặc được xác định hoàn toàn bởi giá trị hạt giống, 444.

>>>

from numpy import random
from time import sleep

sleeptime = random.uniform(2, 4)
print("sleeping for:", sleeptime, "seconds")
sleep(sleeptime)
print("sleeping is over")
5

Nếu bạn tự chạy mã này, tôi sẽ đặt cược tiết kiệm cuộc sống của mình rằng các số được trả lại trên máy của bạn sẽ khác. Mặc định khi bạn don hạt giống máy phát điện là sử dụng thời gian hệ thống hiện tại của bạn hoặc nguồn ngẫu nhiên của bạn từ hệ điều hành của bạn nếu có sẵn.

Với

>>> # Don't call `random.seed()` yet
>>> import random
>>> random.random()
0.35553263284394376
>>> random.random()
0.6101992345575074
1, bạn có thể tạo ra kết quả có thể tái tạo và chuỗi cuộc gọi sau
>>> # Don't call `random.seed()` yet
>>> import random
>>> random.random()
0.35553263284394376
>>> random.random()
0.6101992345575074
1 sẽ tạo ra cùng một dấu vết dữ liệu:

>>>

from numpy import random
from time import sleep

sleeptime = random.uniform(2, 4)
print("sleeping for:", sleeptime, "seconds")
sleep(sleeptime)
print("sleeping is over")
6

Không có gì khó chịu, đây là một vài ví dụ để kích thích sự thèm ăn của bạn:

>>>

from numpy import random
from time import sleep

sleeptime = random.uniform(2, 4)
print("sleeping for:", sleeptime, "seconds")
sleep(sleeptime)
print("sleeping is over")
7

Trong cú pháp cho

>>> random.randrange(1, 10)
5
3, các tham số
>>> random.randrange(1, 10)
5
4 là tùy chọn và biểu thị hình dạng của đối tượng cuối cùng. Ở đây,
>>> random.randrange(1, 10)
5
5 tạo ra một mảng 2D với 3 hàng và 4 cột. Dữ liệu sẽ là i.i.d., có nghĩa là mỗi điểm dữ liệu được rút ra độc lập với các điểm khác.

Một hoạt động phổ biến khác là tạo ra một chuỗi các giá trị boolean ngẫu nhiên,

>>> random.randrange(1, 10)
5
6 hoặc
>>> random.randrange(1, 10)
5
7. Một cách để làm điều này sẽ là với
>>> random.randrange(1, 10)
5
8. Tuy nhiên, nó thực sự nhanh hơn khoảng 4 lần để chọn từ
>>> random.randrange(1, 10)
5
9 và sau đó xem các số nguyên này đến các giá trị boolean tương ứng của chúng:

>>>

from numpy import random
from time import sleep

sleeptime = random.uniform(2, 4)
print("sleeping for:", sleeptime, "seconds")
sleep(sleeptime)
print("sleeping is over")
8

Điều gì về việc tạo dữ liệu tương quan? Hãy nói rằng bạn muốn mô phỏng hai chuỗi thời gian tương quan. Một cách để đi về điều này là với chức năng Numpy từ ____990, tính đến một ma trận hiệp phương sai. Nói cách khác, để rút ra từ một biến ngẫu nhiên được phân phối thông thường, bạn cần chỉ định giá trị trung bình và phương sai của nó (hoặc độ lệch chuẩn).

Để lấy mẫu từ phân phối bình thường đa biến, bạn chỉ định ma trận phương pháp và hiệp phương sai, và bạn kết thúc với nhiều chuỗi dữ liệu tương quan, mỗi chuỗi được phân phối gần như bình thường.

Tuy nhiên, thay vì hiệp phương sai, mối tương quan là một biện pháp quen thuộc và trực quan hơn với hầu hết. Nó có sự hiệp phương sai được chuẩn hóa bởi sản phẩm của độ lệch chuẩn, và do đó bạn cũng có thể xác định hiệp phương sai về mặt tương quan và độ lệch chuẩn:

Hướng dẫn python sleep random float - python ngủ nổi ngẫu nhiên

Vì vậy, bạn có thể vẽ các mẫu ngẫu nhiên từ phân phối bình thường đa biến bằng cách chỉ định một ma trận tương quan và độ lệch chuẩn? Có, nhưng bạn sẽ cần phải đưa các mẫu trên vào mẫu ma trận trước tiên. Ở đây, S là một vectơ của độ lệch chuẩn, p là ma trận tương quan của chúng và C là ma trận hiệp phương sai (vuông) kết quả (vuông):S is a vector of the standard deviations, P is their correlation matrix, and C is the resulting (square) covariance matrix:

Hướng dẫn python sleep random float - python ngủ nổi ngẫu nhiên

Điều này có thể được thể hiện trong Numpy như sau:

from numpy import random
from time import sleep

sleeptime = random.uniform(2, 4)
print("sleeping for:", sleeptime, "seconds")
sleep(sleeptime)
print("sleeping is over")
9

Bây giờ, bạn có thể tạo hai chuỗi thời gian tương quan nhưng vẫn ngẫu nhiên:

>>>

from numpy.random import default_rng
from time import sleep

rng = default_rng()

# generates a scalar [single] value greater than or equal to 1
# but less than 3
time_to_sleep = rng.uniform(1, 3)

sleep(time_to_sleep)
0

Bạn có thể nghĩ

>>> random.uniform(20, 30)
27.42639687016509
>>> random.uniform(30, 40)
36.33865802745107
1 là 500 cặp điểm dữ liệu tương quan nghịch. Ở đây, một kiểm tra tỉnh táo rằng bạn có thể quay lại các đầu vào ban đầu, gần đúng
>>> random.uniform(20, 30)
27.42639687016509
>>> random.uniform(30, 40)
36.33865802745107
2,
>>> random.uniform(20, 30)
27.42639687016509
>>> random.uniform(30, 40)
36.33865802745107
3 và
>>> random.uniform(20, 30)
27.42639687016509
>>> random.uniform(30, 40)
36.33865802745107
4 từ trên:

>>>

from numpy.random import default_rng
from time import sleep

rng = default_rng()

# generates a scalar [single] value greater than or equal to 1
# but less than 3
time_to_sleep = rng.uniform(1, 3)

sleep(time_to_sleep)
1

Trước khi chúng tôi chuyển sang CSPRNGS, có thể hữu ích khi tóm tắt một số chức năng

class NotSoRandom(object):
    def seed(self, a=3):
        """Seed the world's most mysterious random number generator."""
        self.seedval = a
    def random(self):
        """Look, random numbers!"""
        self.seedval = (self.seedval * 3) % 19
        return self.seedval

_inst = NotSoRandom()
seed = _inst.seed
random = _inst.random
5 và các đối tác
>>> seed(1234)
>>> [random() for _ in range(10)]
[16, 10, 11, 14, 4, 12, 17, 13, 1, 3]

>>> seed(1234)
>>> [random() for _ in range(10)]
[16, 10, 11, 14, 4, 12, 17, 13, 1, 3]
5 của chúng:

Mô -đun Python
class NotSoRandom(object):
    def seed(self, a=3):
        """Seed the world's most mysterious random number generator."""
        self.seedval = a
    def random(self):
        """Look, random numbers!"""
        self.seedval = (self.seedval * 3) % 19
        return self.seedval

_inst = NotSoRandom()
seed = _inst.seed
random = _inst.random
5
Đối tác numpySử dụng
class NotSoRandom(object):
    def seed(self, a=3):
        """Seed the world's most mysterious random number generator."""
        self.seedval = a
    def random(self):
        """Look, random numbers!"""
        self.seedval = (self.seedval * 3) % 19
        return self.seedval

_inst = NotSoRandom()
seed = _inst.seed
random = _inst.random
9
>>> random.uniform(20, 30)
27.42639687016509
>>> random.uniform(30, 40)
36.33865802745107
9
Phao ngẫu nhiên trong [0,0, 1.0)
from numpy import random
from time import sleep

sleeptime = random.uniform(2, 4)
print("sleeping for:", sleeptime, "seconds")
sleep(sleeptime)
print("sleeping is over")
00
from numpy import random
from time import sleep

sleeptime = random.uniform(2, 4)
print("sleeping for:", sleeptime, "seconds")
sleep(sleeptime)
print("sleeping is over")
01
Số nguyên ngẫu nhiên trong [A, B]
from numpy import random
from time import sleep

sleeptime = random.uniform(2, 4)
print("sleeping for:", sleeptime, "seconds")
sleep(sleeptime)
print("sleeping is over")
02
from numpy import random
from time import sleep

sleeptime = random.uniform(2, 4)
print("sleeping for:", sleeptime, "seconds")
sleep(sleeptime)
print("sleeping is over")
03
Số nguyên ngẫu nhiên trong [A, B)
from numpy import random
from time import sleep

sleeptime = random.uniform(2, 4)
print("sleeping for:", sleeptime, "seconds")
sleep(sleeptime)
print("sleeping is over")
04
from numpy import random
from time import sleep

sleeptime = random.uniform(2, 4)
print("sleeping for:", sleeptime, "seconds")
sleep(sleeptime)
print("sleeping is over")
05
Phao ngẫu nhiên trong [A, B]
from numpy import random
from time import sleep

sleeptime = random.uniform(2, 4)
print("sleeping for:", sleeptime, "seconds")
sleep(sleeptime)
print("sleeping is over")
06
from numpy import random
from time import sleep

sleeptime = random.uniform(2, 4)
print("sleeping for:", sleeptime, "seconds")
sleep(sleeptime)
print("sleeping is over")
07
Yếu tố ngẫu nhiên từ
from numpy import random
from time import sleep

sleeptime = random.uniform(2, 4)
print("sleeping for:", sleeptime, "seconds")
sleep(sleeptime)
print("sleeping is over")
08
from numpy import random
from time import sleep

sleeptime = random.uniform(2, 4)
print("sleeping for:", sleeptime, "seconds")
sleep(sleeptime)
print("sleeping is over")
09
from numpy import random
from time import sleep

sleeptime = random.uniform(2, 4)
print("sleeping for:", sleeptime, "seconds")
sleep(sleeptime)
print("sleeping is over")
07
Yếu tố ngẫu nhiên từ
from numpy import random
from time import sleep

sleeptime = random.uniform(2, 4)
print("sleeping for:", sleeptime, "seconds")
sleep(sleeptime)
print("sleeping is over")
08
from numpy import random
from time import sleep

sleeptime = random.uniform(2, 4)
print("sleeping for:", sleeptime, "seconds")
sleep(sleeptime)
print("sleeping is over")
09
Các yếu tố ngẫu nhiên
>>> random.randint(0, 10)
7
>>> random.randint(500, 50000)
18601
1 từ
from numpy import random
from time import sleep

sleeptime = random.uniform(2, 4)
print("sleeping for:", sleeptime, "seconds")
sleep(sleeptime)
print("sleeping is over")
08 với sự thay thế
from numpy import random
from time import sleep

sleeptime = random.uniform(2, 4)
print("sleeping for:", sleeptime, "seconds")
sleep(sleeptime)
print("sleeping is over")
13
from numpy import random
from time import sleep

sleeptime = random.uniform(2, 4)
print("sleeping for:", sleeptime, "seconds")
sleep(sleeptime)
print("sleeping is over")
07 với
from numpy import random
from time import sleep

sleeptime = random.uniform(2, 4)
print("sleeping for:", sleeptime, "seconds")
sleep(sleeptime)
print("sleeping is over")
15
Các yếu tố ngẫu nhiên
>>> random.randint(0, 10)
7
>>> random.randint(500, 50000)
18601
1 từ
from numpy import random
from time import sleep

sleeptime = random.uniform(2, 4)
print("sleeping for:", sleeptime, "seconds")
sleep(sleeptime)
print("sleeping is over")
08 mà không cần thay thế
from numpy import random
from time import sleep

sleeptime = random.uniform(2, 4)
print("sleeping for:", sleeptime, "seconds")
sleep(sleeptime)
print("sleeping is over")
18
from numpy import random
from time import sleep

sleeptime = random.uniform(2, 4)
print("sleeping for:", sleeptime, "seconds")
sleep(sleeptime)
print("sleeping is over")
19
Xáo trộn chuỗi
>>> seed(1234)
>>> [random() for _ in range(10)]
[16, 10, 11, 14, 4, 12, 17, 13, 1, 3]

>>> seed(1234)
>>> [random() for _ in range(10)]
[16, 10, 11, 14, 4, 12, 17, 13, 1, 3]
1 tại chỗ
from numpy import random
from time import sleep

sleeptime = random.uniform(2, 4)
print("sleeping for:", sleeptime, "seconds")
sleep(sleeptime)
print("sleeping is over")
21 hoặc
from numpy import random
from time import sleep

sleeptime = random.uniform(2, 4)
print("sleeping for:", sleeptime, "seconds")
sleep(sleeptime)
print("sleeping is over")
22

from numpy import random
from time import sleep

sleeptime = random.uniform(2, 4)
print("sleeping for:", sleeptime, "seconds")
sleep(sleeptime)
print("sleeping is over")
23

Mẫu từ phân phối bình thường với trung bình from numpy import random from time import sleep sleeptime = random.uniform(2, 4) print("sleeping for:", sleeptime, "seconds") sleep(sleeptime) print("sleeping is over") 24 và độ lệch chuẩn from numpy import random from time import sleep sleeptime = random.uniform(2, 4) print("sleeping for:", sleeptime, "seconds") sleep(sleeptime) print("sleeping is over") 25

Bây giờ, bạn đã bao gồm hai tùy chọn cơ bản cho PRNG, hãy để Lôi chuyển sang một vài điều chỉnh an toàn hơn.

CSPRNGS trong Python

  • from numpy import random
    from time import sleep
    
    sleeptime = random.uniform(2, 4)
    print("sleeping for:", sleeptime, "seconds")
    sleep(sleeptime)
    print("sleeping is over")
    
    26: khoảng ngẫu nhiên khi nó nhận được

  • Chức năng Python sườn ____126 được sử dụng bởi cả

    >>> seed(1234)
    >>> [random() for _ in range(10)]
    [16, 10, 11, 14, 4, 12, 17, 13, 1, 3]
    
    >>> seed(1234)
    >>> [random() for _ in range(10)]
    [16, 10, 11, 14, 4, 12, 17, 13, 1, 3]
    
    7 và
    >>> seed(1234)
    >>> [random() for _ in range(10)]
    [16, 10, 11, 14, 4, 12, 17, 13, 1, 3]
    
    >>> seed(1234)
    >>> [random() for _ in range(10)]
    [16, 10, 11, 14, 4, 12, 17, 13, 1, 3]
    
    8 (cả hai bạn sẽ thấy ở đây trong một khoảnh khắc). Không cần đi sâu vào quá nhiều chi tiết,
    from numpy import random
    from time import sleep
    
    sleeptime = random.uniform(2, 4)
    print("sleeping for:", sleeptime, "seconds")
    sleep(sleeptime)
    print("sleeping is over")
    
    26 tạo ra các byte ngẫu nhiên phụ thuộc hệ điều hành có thể được gọi một cách an toàn về mặt mật mã:

Trên các hệ điều hành UNIX, nó đọc các byte ngẫu nhiên từ tệp đặc biệt

from numpy import random
from time import sleep

sleeptime = random.uniform(2, 4)
print("sleeping for:", sleeptime, "seconds")
sleep(sleeptime)
print("sleeping is over")
31, từ đó cho phép truy cập vào tiếng ồn môi trường được thu thập từ trình điều khiển thiết bị và các nguồn khác. .

>>>

from numpy.random import default_rng
from time import sleep

rng = default_rng()

# generates a scalar [single] value greater than or equal to 1
# but less than 3
time_to_sleep = rng.uniform(1, 3)

sleep(time_to_sleep)
2

Trên Windows, hàm C ++

from numpy import random
from time import sleep

sleeptime = random.uniform(2, 4)
print("sleeping for:", sleeptime, "seconds")
sleep(sleeptime)
print("sleeping is over")
32 được sử dụng. Hàm này vẫn là giả kỹ thuật, nhưng nó hoạt động bằng cách tạo giá trị hạt giống từ các biến như ID quy trình, trạng thái bộ nhớ, v.v.

from numpy import random
from time import sleep

sleeptime = random.uniform(2, 4)
print("sleeping for:", sleeptime, "seconds")
sleep(sleeptime)
print("sleeping is over")
26 Trả về một chuỗi các byte đơn:

>>>

from numpy.random import default_rng
from time import sleep

rng = default_rng()

# generates a scalar [single] value greater than or equal to 1
# but less than 3
time_to_sleep = rng.uniform(1, 3)

sleep(time_to_sleep)
3

Nhưng làm thế nào điều này cuối cùng bị biến thành Python

>>> random.randint(0, 10)
7
>>> random.randint(500, 50000)
18601
0 hoặc chuỗi số?

Đầu tiên, nhớ lại một trong những khái niệm cơ bản của điện toán, đó là một byte được tạo thành từ 8 bit. Bạn có thể nghĩ một chút như một chữ số duy nhất là 0 hoặc 1. Một byte chọn hiệu quả trong khoảng từ 0 đến 1 tám lần, do đó, cả

from numpy import random
from time import sleep

sleeptime = random.uniform(2, 4)
print("sleeping for:", sleeptime, "seconds")
sleep(sleeptime)
print("sleeping is over")
39 và
from numpy import random
from time import sleep

sleeptime = random.uniform(2, 4)
print("sleeping for:", sleeptime, "seconds")
sleep(sleeptime)
print("sleeping is over")
40 có thể đại diện cho byte. Hãy thử điều này, sử dụng các chuỗi Python F được giới thiệu trong Python 3.6, trong phiên dịch của bạn:

>>>

from numpy.random import default_rng
from time import sleep

rng = default_rng()

# generates a scalar [single] value greater than or equal to 1
# but less than 3
time_to_sleep = rng.uniform(1, 3)

sleep(time_to_sleep)
4

Nhưng làm thế nào điều này cuối cùng bị biến thành Python

>>> random.randint(0, 10)
7
>>> random.randint(500, 50000)
18601
0 hoặc chuỗi số?

Đầu tiên, nhớ lại một trong những khái niệm cơ bản của điện toán, đó là một byte được tạo thành từ 8 bit. Bạn có thể nghĩ một chút như một chữ số duy nhất là 0 hoặc 1. Một byte chọn hiệu quả trong khoảng từ 0 đến 1 tám lần, do đó, cả

from numpy import random
from time import sleep

sleeptime = random.uniform(2, 4)
print("sleeping for:", sleeptime, "seconds")
sleep(sleeptime)
print("sleeping is over")
39 và
from numpy import random
from time import sleep

sleeptime = random.uniform(2, 4)
print("sleeping for:", sleeptime, "seconds")
sleep(sleeptime)
print("sleeping is over")
40 có thể đại diện cho byte. Hãy thử điều này, sử dụng các chuỗi Python F được giới thiệu trong Python 3.6, trong phiên dịch của bạn:

Điều này tương đương với

from numpy import random
from time import sleep

sleeptime = random.uniform(2, 4)
print("sleeping for:", sleeptime, "seconds")
sleep(sleeptime)
print("sleeping is over")
41, với một số định dạng đặc biệt.
from numpy import random
from time import sleep

sleeptime = random.uniform(2, 4)
print("sleeping for:", sleeptime, "seconds")
sleep(sleeptime)
print("sleeping is over")
42 chuyển đổi một số nguyên thành biểu diễn nhị phân của nó dưới dạng chuỗi.

Điều đó để chúng ta ở đâu? Sử dụng

from numpy import random
from time import sleep

sleeptime = random.uniform(2, 4)
print("sleeping for:", sleeptime, "seconds")
sleep(sleeptime)
print("sleeping is over")
43 ở trên không phải là một lựa chọn ngẫu nhiên. (Không có ý định chơi chữ.) Cho rằng chúng tôi được phép 8 bit, mỗi bit có 2 lựa chọn, có
from numpy import random
from time import sleep

sleeptime = random.uniform(2, 4)
print("sleeping for:", sleeptime, "seconds")
sleep(sleeptime)
print("sleeping is over")
44 Byte có thể kết hợp.

>>>

from numpy.random import default_rng
from time import sleep

rng = default_rng()

# generates a scalar [single] value greater than or equal to 1
# but less than 3
time_to_sleep = rng.uniform(1, 3)

sleep(time_to_sleep)
5

Nhưng làm thế nào điều này cuối cùng bị biến thành Python

>>> random.randint(0, 10)
7
>>> random.randint(500, 50000)
18601
0 hoặc chuỗi số?

>>>

from numpy.random import default_rng
from time import sleep

rng = default_rng()

# generates a scalar [single] value greater than or equal to 1
# but less than 3
time_to_sleep = rng.uniform(1, 3)

sleep(time_to_sleep)
6

Nhưng làm thế nào điều này cuối cùng bị biến thành Python

>>> random.randint(0, 10)
7
>>> random.randint(500, 50000)
18601
0 hoặc chuỗi số?

Đầu tiên, nhớ lại một trong những khái niệm cơ bản của điện toán, đó là một byte được tạo thành từ 8 bit. Bạn có thể nghĩ một chút như một chữ số duy nhất là 0 hoặc 1. Một byte chọn hiệu quả trong khoảng từ 0 đến 1 tám lần, do đó, cả

from numpy import random
from time import sleep

sleeptime = random.uniform(2, 4)
print("sleeping for:", sleeptime, "seconds")
sleep(sleeptime)
print("sleeping is over")
39 và
from numpy import random
from time import sleep

sleeptime = random.uniform(2, 4)
print("sleeping for:", sleeptime, "seconds")
sleep(sleeptime)
print("sleeping is over")
40 có thể đại diện cho byte. Hãy thử điều này, sử dụng các chuỗi Python F được giới thiệu trong Python 3.6, trong phiên dịch của bạn:

Điều này tương đương với

from numpy import random
from time import sleep

sleeptime = random.uniform(2, 4)
print("sleeping for:", sleeptime, "seconds")
sleep(sleeptime)
print("sleeping is over")
41, với một số định dạng đặc biệt.
from numpy import random
from time import sleep

sleeptime = random.uniform(2, 4)
print("sleeping for:", sleeptime, "seconds")
sleep(sleeptime)
print("sleeping is over")
42 chuyển đổi một số nguyên thành biểu diễn nhị phân của nó dưới dạng chuỗi.

>>>

from numpy.random import default_rng
from time import sleep

rng = default_rng()

# generates a scalar [single] value greater than or equal to 1
# but less than 3
time_to_sleep = rng.uniform(1, 3)

sleep(time_to_sleep)
7

Điều đó để chúng ta ở đâu? Sử dụng

from numpy import random
from time import sleep

sleeptime = random.uniform(2, 4)
print("sleeping for:", sleeptime, "seconds")
sleep(sleeptime)
print("sleeping is over")
43 ở trên không phải là một lựa chọn ngẫu nhiên. (Không có ý định chơi chữ.) Cho rằng chúng tôi được phép 8 bit, mỗi bit có 2 lựa chọn, có
from numpy import random
from time import sleep

sleeptime = random.uniform(2, 4)
print("sleeping for:", sleeptime, "seconds")
sleep(sleeptime)
print("sleeping is over")
44 Byte có thể kết hợp.

Điều này có nghĩa là mỗi byte ánh xạ tới một số nguyên từ 0 đến 255. Nói cách khác, chúng ta sẽ cần hơn 8 bit để thể hiện số nguyên 256. Bạn có thể xác minh điều này bằng cách kiểm tra rằng

from numpy import random
from time import sleep

sleeptime = random.uniform(2, 4)
print("sleeping for:", sleeptime, "seconds")
sleep(sleeptime)
print("sleeping is over")
45 hiện là 9 chứ không phải 8.

Được rồi, bây giờ hãy để Lừa quay lại kiểu dữ liệu

from numpy import random
from time import sleep

sleeptime = random.uniform(2, 4)
print("sleeping for:", sleeptime, "seconds")
sleep(sleeptime)
print("sleeping is over")
34 mà bạn đã thấy ở trên, bằng cách xây dựng chuỗi các byte tương ứng với các số nguyên từ 0 đến 255:

Nếu bạn gọi from numpy import random from time import sleep sleeptime = random.uniform(2, 4) print("sleeping for:", sleeptime, "seconds") sleep(sleeptime) print("sleeping is over") 47, bạn sẽ quay lại danh sách Python chạy từ 0 đến 255. Nhưng nếu bạn chỉ in from numpy import random from time import sleep sleeptime = random.uniform(2, 4) print("sleeping for:", sleeptime, "seconds") sleep(sleeptime) print("sleeping is over") 48, bạn sẽ có một chuỗi trông xấu xí nằm rải rác với các dấu gạch chéo ngược:

Những dấu gạch chéo ngược này là các chuỗi thoát và

from numpy import random
from time import sleep

sleeptime = random.uniform(2, 4)
print("sleeping for:", sleeptime, "seconds")
sleep(sleeptime)
print("sleeping is over")
49 đại diện cho ký tự có giá trị hex
from numpy import random
from time import sleep

sleeptime = random.uniform(2, 4)
print("sleeping for:", sleeptime, "seconds")
sleep(sleeptime)
print("sleeping is over")
50. Một số yếu tố của
from numpy import random
from time import sleep

sleeptime = random.uniform(2, 4)
print("sleeping for:", sleeptime, "seconds")
sleep(sleeptime)
print("sleeping is over")
48 được hiển thị theo nghĩa đen (các ký tự có thể in như chữ cái, số và dấu câu). Hầu hết được thể hiện với Escapes.
from numpy import random
from time import sleep

sleeptime = random.uniform(2, 4)
print("sleeping for:", sleeptime, "seconds")
sleep(sleeptime)
print("sleeping is over")
52 đại diện cho không gian ngược bàn phím, trong khi
from numpy import random
from time import sleep

sleeptime = random.uniform(2, 4)
print("sleeping for:", sleeptime, "seconds")
sleep(sleeptime)
print("sleeping is over")
53 là một sự trở lại vận chuyển (một phần của dòng mới, trên Windows Systems).

Nếu bạn cần một sự bồi dưỡng trên thập lục phân, mã Charles Petzold,: Ngôn ngữ ẩn là một nơi tuyệt vời cho điều đó. Hex là một hệ thống đánh số cơ sở-16, thay vì sử dụng 0 đến 9, sử dụng 0 đến 9 và A đến F làm chữ số cơ bản của nó.

>>>

from numpy.random import default_rng
from time import sleep

rng = default_rng()

# generates a scalar [single] value greater than or equal to 1
# but less than 3
time_to_sleep = rng.uniform(1, 3)

sleep(time_to_sleep)
8

Cuối cùng, hãy để Lừa quay trở lại nơi bạn bắt đầu, với chuỗi các byte ngẫu nhiên

>>> seed(1234)
>>> [random() for _ in range(10)]
[16, 10, 11, 14, 4, 12, 17, 13, 1, 3]

>>> seed(1234)
>>> [random() for _ in range(10)]
[16, 10, 11, 14, 4, 12, 17, 13, 1, 3]
1. Hy vọng điều này có ý nghĩa hơn một chút bây giờ. Gọi
from numpy import random
from time import sleep

sleeptime = random.uniform(2, 4)
print("sleeping for:", sleeptime, "seconds")
sleep(sleeptime)
print("sleeping is over")
55 trên đối tượng
from numpy import random
from time import sleep

sleeptime = random.uniform(2, 4)
print("sleeping for:", sleeptime, "seconds")
sleep(sleeptime)
print("sleeping is over")
34 cho
>>> random.randint(0, 10)
7
>>> random.randint(500, 50000)
18601
0 số thập lục phân, với mỗi số tương ứng với số thập phân từ 0 đến 255:

Một câu hỏi cuối cùng: Làm thế nào

from numpy import random
from time import sleep

sleeptime = random.uniform(2, 4)
print("sleeping for:", sleeptime, "seconds")
sleep(sleeptime)
print("sleeping is over")
58 12 ký tự ở trên, mặc dù
>>> seed(1234)
>>> [random() for _ in range(10)]
[16, 10, 11, 14, 4, 12, 17, 13, 1, 3]

>>> seed(1234)
>>> [random() for _ in range(10)]
[16, 10, 11, 14, 4, 12, 17, 13, 1, 3]
1 chỉ là 6 byte? Điều này là do hai chữ số thập lục phân tương ứng chính xác với một byte duy nhất. Phiên bản
>>> random.randint(0, 10)
7
>>> random.randint(500, 50000)
18601
0 của
from numpy import random
from time import sleep

sleeptime = random.uniform(2, 4)
print("sleeping for:", sleeptime, "seconds")
sleep(sleeptime)
print("sleeping is over")
34 sẽ luôn dài gấp đôi so với mắt chúng ta có liên quan.short.ly. Here’s a function to get you started with your service:

from numpy.random import default_rng
from time import sleep

rng = default_rng()

# generates a scalar [single] value greater than or equal to 1
# but less than 3
time_to_sleep = rng.uniform(1, 3)

sleep(time_to_sleep)
9

Ngay cả khi byte (chẳng hạn như

from numpy import random
from time import sleep

sleeptime = random.uniform(2, 4)
print("sleeping for:", sleeptime, "seconds")
sleep(sleeptime)
print("sleeping is over")
62) không cần được biểu diễn 8 bit đầy đủ,
from numpy import random
from time import sleep

sleeptime = random.uniform(2, 4)
print("sleeping for:", sleeptime, "seconds")
sleep(sleeptime)
print("sleeping is over")
58 sẽ luôn sử dụng hai chữ số hex trên byte, do đó, số 1 sẽ được biểu diễn là
from numpy import random
from time import sleep

sleeptime = random.uniform(2, 4)
print("sleeping for:", sleeptime, "seconds")
sleep(sleeptime)
print("sleeping is over")
64 thay vì chỉ
from numpy import random
from time import sleep

sleeptime = random.uniform(2, 4)
print("sleeping for:", sleeptime, "seconds")
sleep(sleeptime)
print("sleeping is over")
65. Tuy nhiên, về mặt toán học, cả hai đều có cùng kích thước.

Với điều đó dưới vành đai của bạn, hãy để cảm ứng trên một mô-đun được giới thiệu gần đây,

>>> seed(1234)
>>> [random() for _ in range(10)]
[16, 10, 11, 14, 4, 12, 17, 13, 1, 3]

>>> seed(1234)
>>> [random() for _ in range(10)]
[16, 10, 11, 14, 4, 12, 17, 13, 1, 3]
7, giúp tạo ra các mã thông báo an toàn thân thiện với người dùng hơn nhiều.

>>>

class NotSoRandom(object):
    def seed(self, a=3):
        """Seed the world's most mysterious random number generator."""
        self.seedval = a
    def random(self):
        """Look, random numbers!"""
        self.seedval = (self.seedval * 3) % 19
        return self.seedval

_inst = NotSoRandom()
seed = _inst.seed
random = _inst.random
0

Python sườn tốt nhất giữ

>>> seed(1234)
>>> [random() for _ in range(10)]
[16, 10, 11, 14, 4, 12, 17, 13, 1, 3]

>>> seed(1234)
>>> [random() for _ in range(10)]
[16, 10, 11, 14, 4, 12, 17, 13, 1, 3]
7

Một ứng cử viên cuối cùng: >>> seed(1234) >>> [random() for _ in range(10)] [16, 10, 11, 14, 4, 12, 17, 13, 1, 3] >>> seed(1234) >>> [random() for _ in range(10)] [16, 10, 11, 14, 4, 12, 17, 13, 1, 3] 8

Một tùy chọn cuối cùng để tạo mã thông báo ngẫu nhiên là hàm

from numpy import random
from time import sleep

sleeptime = random.uniform(2, 4)
print("sleeping for:", sleeptime, "seconds")
sleep(sleeptime)
print("sleeping is over")
73 từ mô -đun PythonTHER
>>> seed(1234)
>>> [random() for _ in range(10)]
[16, 10, 11, 14, 4, 12, 17, 13, 1, 3]

>>> seed(1234)
>>> [random() for _ in range(10)]
[16, 10, 11, 14, 4, 12, 17, 13, 1, 3]
8. UUID là một định danh độc đáo toàn cầu, trình tự 128 bit (
>>> random.randint(0, 10)
7
>>> random.randint(500, 50000)
18601
0 có độ dài 32) được thiết kế để đảm bảo tính duy nhất trên không gian và thời gian.
from numpy import random
from time import sleep

sleeptime = random.uniform(2, 4)
print("sleeping for:", sleeptime, "seconds")
sleep(sleeptime)
print("sleeping is over")
73 là một trong những chức năng hữu ích nhất của mô -đun và chức năng này cũng sử dụng
from numpy import random
from time import sleep

sleeptime = random.uniform(2, 4)
print("sleeping for:", sleeptime, "seconds")
sleep(sleeptime)
print("sleeping is over")
26:

>>>

class NotSoRandom(object):
    def seed(self, a=3):
        """Seed the world's most mysterious random number generator."""
        self.seedval = a
    def random(self):
        """Look, random numbers!"""
        self.seedval = (self.seedval * 3) % 19
        return self.seedval

_inst = NotSoRandom()
seed = _inst.seed
random = _inst.random
1

Điều tuyệt vời là tất cả các chức năng của ____ 48 đều tạo ra một thể hiện của lớp

from numpy import random
from time import sleep

sleeptime = random.uniform(2, 4)
print("sleeping for:", sleeptime, "seconds")
sleep(sleeptime)
print("sleeping is over")
79, gói gọn ID và có các thuộc tính như
from numpy import random
from time import sleep

sleeptime = random.uniform(2, 4)
print("sleeping for:", sleeptime, "seconds")
sleep(sleeptime)
print("sleeping is over")
80,
from numpy import random
from time import sleep

sleeptime = random.uniform(2, 4)
print("sleeping for:", sleeptime, "seconds")
sleep(sleeptime)
print("sleeping is over")
81 và
from numpy import random
from time import sleep

sleeptime = random.uniform(2, 4)
print("sleeping for:", sleeptime, "seconds")
sleep(sleeptime)
print("sleeping is over")
82:

>>>

class NotSoRandom(object):
    def seed(self, a=3):
        """Seed the world's most mysterious random number generator."""
        self.seedval = a
    def random(self):
        """Look, random numbers!"""
        self.seedval = (self.seedval * 3) % 19
        return self.seedval

_inst = NotSoRandom()
seed = _inst.seed
random = _inst.random
2

Điều tuyệt vời là tất cả các chức năng của ____ 48 đều tạo ra một thể hiện của lớp

from numpy import random
from time import sleep

sleeptime = random.uniform(2, 4)
print("sleeping for:", sleeptime, "seconds")
sleep(sleeptime)
print("sleeping is over")
79, gói gọn ID và có các thuộc tính như
from numpy import random
from time import sleep

sleeptime = random.uniform(2, 4)
print("sleeping for:", sleeptime, "seconds")
sleep(sleeptime)
print("sleeping is over")
80,
from numpy import random
from time import sleep

sleeptime = random.uniform(2, 4)
print("sleeping for:", sleeptime, "seconds")
sleep(sleeptime)
print("sleeping is over")
81 và
from numpy import random
from time import sleep

sleeptime = random.uniform(2, 4)
print("sleeping for:", sleeptime, "seconds")
sleep(sleeptime)
print("sleeping is over")
82:

  • Bạn cũng có thể đã thấy một số biến thể khác:

    from numpy import random
    from time import sleep
    
    sleeptime = random.uniform(2, 4)
    print("sleeping for:", sleeptime, "seconds")
    sleep(sleeptime)
    print("sleeping is over")
    
    83,
    from numpy import random
    from time import sleep
    
    sleeptime = random.uniform(2, 4)
    print("sleeping for:", sleeptime, "seconds")
    sleep(sleeptime)
    print("sleeping is over")
    
    84 và
    from numpy import random
    from time import sleep
    
    sleeptime = random.uniform(2, 4)
    print("sleeping for:", sleeptime, "seconds")
    sleep(sleeptime)
    print("sleeping is over")
    
    85. Sự khác biệt chính giữa những điều này và
    from numpy import random
    from time import sleep
    
    sleeptime = random.uniform(2, 4)
    print("sleeping for:", sleeptime, "seconds")
    sleep(sleeptime)
    print("sleeping is over")
    
    73 là ba chức năng đó đều có một số hình thức đầu vào và do đó, don không đáp ứng định nghĩa của ngẫu nhiên, trong phạm vi mà phiên bản 4 UUID làm:

  • from numpy import random
    from time import sleep
    
    sleeptime = random.uniform(2, 4)
    print("sleeping for:", sleeptime, "seconds")
    sleep(sleeptime)
    print("sleeping is over")
    
    83 sử dụng ID máy chủ máy của bạn và thời gian hiện tại theo mặc định. Do sự phụ thuộc vào thời gian hiện tại xuống độ phân giải NanoSecond, phiên bản này là nơi UUID có được yêu cầu bảo đảm tính duy nhất theo thời gian.

from numpy import random
from time import sleep

sleeptime = random.uniform(2, 4)
print("sleeping for:", sleeptime, "seconds")
sleep(sleeptime)
print("sleeping is over")
84 và
from numpy import random
from time import sleep

sleeptime = random.uniform(2, 4)
print("sleeping for:", sleeptime, "seconds")
sleep(sleeptime)
print("sleeping is over")
85 đều lấy một định danh không gian tên và một tên. Cái trước sử dụng băm MD5 và cái sau sử dụng SHA-1.

from numpy import random
from time import sleep

sleeptime = random.uniform(2, 4)
print("sleeping for:", sleeptime, "seconds")
sleep(sleeptime)
print("sleeping is over")
73, ngược lại, hoàn toàn giả (hoặc ngẫu nhiên). Nó bao gồm nhận được 16 byte thông qua
from numpy import random
from time import sleep

sleeptime = random.uniform(2, 4)
print("sleeping for:", sleeptime, "seconds")
sleep(sleeptime)
print("sleeping is over")
26, chuyển đổi nó thành một số nguyên lớn và thực hiện một số hoạt động bitwise để tuân thủ đặc điểm kỹ thuật chính thức.

Hy vọng rằng, bây giờ bạn có một ý tưởng tốt về sự khác biệt giữa các loại dữ liệu ngẫu nhiên khác nhau và cách tạo chúng. Tuy nhiên, một vấn đề khác có thể xuất hiện trong đầu là va chạm.

Trong trường hợp này, một vụ va chạm chỉ đơn giản là đề cập đến việc tạo ra hai UUID phù hợp. Cơ hội của điều đó là gì? Chà, về mặt kỹ thuật không phải là bằng không, nhưng có lẽ nó đủ gần: có các giá trị

from numpy import random
from time import sleep

sleeptime = random.uniform(2, 4)
print("sleeping for:", sleeptime, "seconds")
sleep(sleeptime)
print("sleeping is over")
92 hoặc 340 không thể có được
from numpy import random
from time import sleep

sleeptime = random.uniform(2, 4)
print("sleeping for:", sleeptime, "seconds")
sleep(sleeptime)
print("sleeping is over")
93. Vì vậy, tôi sẽ để nó để bạn đánh giá xem điều này có đủ đảm bảo để ngủ ngon hay không.

Một cách sử dụng phổ biến của >>> seed(1234) >>> [random() for _ in range(10)] [16, 10, 11, 14, 4, 12, 17, 13, 1, 3] >>> seed(1234) >>> [random() for _ in range(10)] [16, 10, 11, 14, 4, 12, 17, 13, 1, 3] 8 là ở Django, có from numpy import random from time import sleep sleeptime = random.uniform(2, 4) print("sleeping for:", sleeptime, "seconds") sleep(sleeptime) print("sleeping is over") 95 thường được sử dụng làm khóa chính trong cơ sở dữ liệu quan hệ cơ bản của mô hình.

Tại sao không chỉ là mặc định của người Viking

from numpy import random
from time import sleep

sleeptime = random.uniform(2, 4)
print("sleeping for:", sleeptime, "seconds")
sleep(sleeptime)
print("sleeping is over")
96?

Ngoài các mô-đun an toàn được thảo luận ở đây như

>>> seed(1234)
>>> [random() for _ in range(10)]
[16, 10, 11, 14, 4, 12, 17, 13, 1, 3]

>>> seed(1234)
>>> [random() for _ in range(10)]
[16, 10, 11, 14, 4, 12, 17, 13, 1, 3]
7, mô-đun Python, ____35 thực sự có một lớp ít được sử dụng gọi là
from numpy import random
from time import sleep

sleeptime = random.uniform(2, 4)
print("sleeping for:", sleeptime, "seconds")
sleep(sleeptime)
print("sleeping is over")
96 sử dụng
from numpy import random
from time import sleep

sleeptime = random.uniform(2, 4)
print("sleeping for:", sleeptime, "seconds")
sleep(sleeptime)
print("sleeping is over")
26. .

Tại thời điểm này, bạn có thể tự hỏi mình tại sao bạn sẽ chỉ mặc định vào phiên bản này? Tại sao không phải là người luôn luôn an toàn, thay vì mặc định các chức năng

class NotSoRandom(object):
    def seed(self, a=3):
        """Seed the world's most mysterious random number generator."""
        self.seedval = a
    def random(self):
        """Look, random numbers!"""
        self.seedval = (self.seedval * 3) % 19
        return self.seedval

_inst = NotSoRandom()
seed = _inst.seed
random = _inst.random
5 xác định mà aren không an toàn về mặt mật mã?

Tôi đã đề cập đến một lý do: Đôi khi bạn muốn dữ liệu của mình có thể xác định và có thể tái tạo cho những người khác theo dõi.

class NotSoRandom(object):
    def seed(self, a=3):
        """Seed the world's most mysterious random number generator."""
        self.seedval = a
    def random(self):
        """Look, random numbers!"""
        self.seedval = (self.seedval * 3) % 19
        return self.seedval

_inst = NotSoRandom()
seed = _inst.seed
random = _inst.random
3

Nhưng lý do thứ hai là CSPRNG, ít nhất là trong Python, có xu hướng chậm hơn có ý nghĩa so với PRNG. Hãy để thử nghiệm rằng với một tập lệnh,

from numpy.random import default_rng
from time import sleep

rng = default_rng()

# generates a scalar [single] value greater than or equal to 1
# but less than 3
time_to_sleep = rng.uniform(1, 3)

sleep(time_to_sleep)
05, so sánh các phiên bản PRNG và CSPRNG của
from numpy import random
from time import sleep

sleeptime = random.uniform(2, 4)
print("sleeping for:", sleeptime, "seconds")
sleep(sleeptime)
print("sleeping is over")
03 bằng cách sử dụng Python tựa
from numpy.random import default_rng
from time import sleep

rng = default_rng()

# generates a scalar [single] value greater than or equal to 1
# but less than 3
time_to_sleep = rng.uniform(1, 3)

sleep(time_to_sleep)
07:

class NotSoRandom(object):
    def seed(self, a=3):
        """Seed the world's most mysterious random number generator."""
        self.seedval = a
    def random(self):
        """Look, random numbers!"""
        self.seedval = (self.seedval * 3) % 19
        return self.seedval

_inst = NotSoRandom()
seed = _inst.seed
random = _inst.random
4

Bây giờ để thực hiện điều này từ shell:

Sự khác biệt về thời gian 5X chắc chắn là một sự cân nhắc hợp lệ ngoài bảo mật mật mã khi chọn giữa hai.

Tỷ lệ cược và kết thúc: băm

Một khái niệm đã nhận được nhiều sự chú ý trong hướng dẫn này là của băm, có thể được thực hiện với mô -đun Python tựa

from numpy.random import default_rng
from time import sleep

rng = default_rng()

# generates a scalar [single] value greater than or equal to 1
# but less than 3
time_to_sleep = rng.uniform(1, 3)

sleep(time_to_sleep)
08.

Một hàm băm được thiết kế là ánh xạ một chiều từ giá trị đầu vào sang chuỗi có kích thước cố định hầu như không thể đảo ngược kỹ sư. Do đó, trong khi kết quả của hàm băm có thể giống như dữ liệu ngẫu nhiên, nhưng nó không thực sự đủ điều kiện theo định nghĩa ở đây.

Tóm tắt lại

Package/ModuleBạn đã bao phủ rất nhiều nền tảng trong hướng dẫn này. Tóm lại, đây là một so sánh cấp cao về các tùy chọn có sẵn cho bạn về tính ngẫu nhiên kỹ thuật trong Python:Sự mô tả
Bảo mật bằng mã hóa
class NotSoRandom(object):
    def seed(self, a=3):
        """Seed the world's most mysterious random number generator."""
        self.seedval = a
    def random(self):
        """Look, random numbers!"""
        self.seedval = (self.seedval * 3) % 19
        return self.seedval

_inst = NotSoRandom()
seed = _inst.seed
random = _inst.random
5
Dữ liệu ngẫu nhiên Fasty & Easy sử dụng Mersenne Twister
Không
>>> seed(1234)
>>> [random() for _ in range(10)]
[16, 10, 11, 14, 4, 12, 17, 13, 1, 3]

>>> seed(1234)
>>> [random() for _ in range(10)]
[16, 10, 11, 14, 4, 12, 17, 13, 1, 3]
5
Dữ liệu ngẫu nhiên Fasty & Easy sử dụng Mersenne Twister
Không
>>> seed(1234)
>>> [random() for _ in range(10)]
[16, 10, 11, 14, 4, 12, 17, 13, 1, 3]

>>> seed(1234)
>>> [random() for _ in range(10)]
[16, 10, 11, 14, 4, 12, 17, 13, 1, 3]
5
Như
class NotSoRandom(object):
    def seed(self, a=3):
        """Seed the world's most mysterious random number generator."""
        self.seedval = a
    def random(self):
        """Look, random numbers!"""
        self.seedval = (self.seedval * 3) % 19
        return self.seedval

_inst = NotSoRandom()
seed = _inst.seed
random = _inst.random
5 nhưng cho các mảng (có thể đa chiều)
>>> seed(1234)
>>> [random() for _ in range(10)]
[16, 10, 11, 14, 4, 12, 17, 13, 1, 3]

>>> seed(1234)
>>> [random() for _ in range(10)]
[16, 10, 11, 14, 4, 12, 17, 13, 1, 3]
6
Chứa
from numpy.random import default_rng
from time import sleep

rng = default_rng()

# generates a scalar [single] value greater than or equal to 1
# but less than 3
time_to_sleep = rng.uniform(1, 3)

sleep(time_to_sleep)
03, cơ sở của các chức năng khác được đề cập ở đây
Như
class NotSoRandom(object):
    def seed(self, a=3):
        """Seed the world's most mysterious random number generator."""
        self.seedval = a
    def random(self):
        """Look, random numbers!"""
        self.seedval = (self.seedval * 3) % 19
        return self.seedval

_inst = NotSoRandom()
seed = _inst.seed
random = _inst.random
5 nhưng cho các mảng (có thể đa chiều)
>>> seed(1234)
>>> [random() for _ in range(10)]
[16, 10, 11, 14, 4, 12, 17, 13, 1, 3]

>>> seed(1234)
>>> [random() for _ in range(10)]
[16, 10, 11, 14, 4, 12, 17, 13, 1, 3]
6
Chứa
from numpy.random import default_rng
from time import sleep

rng = default_rng()

# generates a scalar [single] value greater than or equal to 1
# but less than 3
time_to_sleep = rng.uniform(1, 3)

sleep(time_to_sleep)
03, cơ sở của các chức năng khác được đề cập ở đây
Đúng

>>> seed(1234)
>>> [random() for _ in range(10)]
[16, 10, 11, 14, 4, 12, 17, 13, 1, 3]

>>> seed(1234)
>>> [random() for _ in range(10)]
[16, 10, 11, 14, 4, 12, 17, 13, 1, 3]
7

Được thiết kế để trở thành mô -đun thực tế Python sườn để tạo ra các số ngẫu nhiên, byte và chuỗi an toàn

  • >>> seed(1234)
    >>> [random() for _ in range(10)]
    [16, 10, 11, 14, 4, 12, 17, 13, 1, 3]
    
    >>> seed(1234)
    >>> [random() for _ in range(10)]
    [16, 10, 11, 14, 4, 12, 17, 13, 1, 3]
    
    8
  • Trang chủ cho một số ít các chức năng để xây dựng số nhận dạng 128 bit
  • Bài báo bán kết trên Mersienne Twister xuất hiện vào năm 1997, nếu bạn thích loại điều đó.
  • Các công thức nấu ăn ITERTOOLS xác định các chức năng để chọn ngẫu nhiên từ một tập hợp tổ hợp, chẳng hạn như từ các kết hợp hoặc hoán vị.
  • Scikit-learn bao gồm các trình tạo mẫu ngẫu nhiên khác nhau có thể được sử dụng để xây dựng các bộ dữ liệu nhân tạo có kích thước và độ phức tạp được kiểm soát.
  • Eli Bendersky đào vào
    >>> # Don't call `random.seed()` yet
    >>> import random
    >>> random.random()
    0.35553263284394376
    >>> random.random()
    0.6101992345575074
    
    6 trong bài viết của mình các phương pháp chậm và nhanh để tạo số nguyên ngẫu nhiên trong Python.
  • Peter Norvig, một giới thiệu cụ thể về xác suất sử dụng Python cũng là một nguồn tài nguyên toàn diện.
  • Thư viện PANDAS bao gồm một trình quản lý bối cảnh có thể được sử dụng để đặt trạng thái ngẫu nhiên tạm thời.
  • Từ Stack Overflow:
    • Tạo ngày ngẫu nhiên trong một phạm vi nhất định
    • Cách nhanh nhất để tạo một chuỗi duy nhất giống như ngẫu nhiên với độ dài ngẫu nhiên
    • Cách sử dụng
      >>> random.seed(444)
      >>> random.random()
      0.3088946587429545
      >>> random.random()
      0.01323751590501987
      
      >>> random.seed(444)  # Re-seed
      >>> random.random()
      0.3088946587429545
      >>> random.random()
      0.01323751590501987
      
      2 trên máy phát điện
    • Thay thế các yếu tố ngẫu nhiên trong một mảng numpy
    • Nhận số từ /dev /ngẫu nhiên trong Python

Xem bây giờ hướng dẫn này có một khóa học video liên quan được tạo bởi nhóm Python thực sự. Xem cùng với hướng dẫn bằng văn bản để hiểu sâu hơn về sự hiểu biết của bạn: Tạo dữ liệu ngẫu nhiên trong Python This tutorial has a related video course created by the Real Python team. Watch it together with the written tutorial to deepen your understanding: Generating Random Data in Python