In python, and assuming I'm on a system which has a random seed generator, how do I get random.seed() to use system time instead? (As if /dev/urandom did not exist)
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
回答1:
import random
from datetime import datetime
random.seed(datetime.now())
回答2:
you can do
import random
import time
random.seed(time.time())
回答3:
Do you know this library: PyRandLib? See:
https://schmouk.github.io/PyRandLib/ to easily download archives versions, and
https://github.com/schmouk/PyRandLib to get access to the code.
This library contains many of the best-in-class pseudo-random numbers generators while acting exactly as does the Python "built-in" library random (just un-zip or un-tar the downloaded archive in the 'Lib/site-packages/' sub-directory of your Python directory).
From the code, and from module 'fastrand32.py', you'll get a quite more sophisticated way to feed random with a shuffled version of current time. For your purpose, this would become:
import time
import random
t = int( time.time() * 1000.0 )
random.seed( ((t & 0xff000000) >> 24) +
((t & 0x00ff0000) >> 8) +
((t & 0x0000ff00) << 8) +
((t & 0x000000ff) << 24) )
This provides a main advantage: for very short periods of time, the initial seeds for feeding the pseudo-random generator will be hugely different between two successive calls.