2009-05-03 33 views

Trả lời

17

"Sử dụng các nguồn, Luke!" ... ;-). Nghiên cứu http://svn.python.org/view/python/trunk/Lib/random.py?revision=68378&view=markup sẽ nhanh chóng trấn an bạn ;-).

gì xảy ra khi hạt giống không được thiết lập (đó là "i là Không" trường hợp):

if a is None: 
    try: 
     a = long(_hexlify(_urandom(16)), 16) 
    except NotImplementedError: 
     import time 
     a = long(time.time() * 256) # use fractional seconds 

và expovariate:

random = self.random 
u = random() 
while u <= 1e-7: 
    u = random() 
return -_log(u)/lambd 

rõ ràng là sử dụng cùng một máy phát điện ngẫu nhiên nằm bên dưới như mọi phương pháp khác, và như vậy là bị ảnh hưởng một cách giống hệt bởi việc gieo hạt hoặc thiếu nó (thực sự, nó sẽ được thực hiện như thế nào? -)

+0

liên kết đã chết: ( –

6

a) Nó thường sử dụng đồng hồ hệ thống, đồng hồ trên một số hệ thống chỉ có thể có độ chính xác ms và vì vậy hạt nhân hai lần rất nhanh có thể dẫn đến cùng một giá trị.

seed (self, a = None) Khởi tạo trạng thái nội bộ từ đối tượng có thể băm.

None or no argument seeds from current time or from an operating 
system specific randomness source if available. 

http://pydoc.org/2.5.1/random.html#Random-seed

b) Tôi sẽ tưởng tượng expovariate không, nhưng tôi không thể tìm thấy bất kỳ bằng chứng. Nó sẽ là ngớ ngẩn nếu nó không.

2

thời gian hệ thống hiện tại được sử dụng; thời gian hệ thống hiện tại cũng được sử dụng để khởi tạo trình tạo khi mô-đun được nhập lần đầu tiên. Nếu các nguồn ngẫu nhiên được cung cấp bởi hệ điều hành, chúng được sử dụng thay cho thời gian hệ thống (xem hàm os.urandom() để biết chi tiết về tính khả dụng).

Random Docs

Các vấn đề liên quan