我这样做是为了测试randint的随机性:
>>> from random import randint
>>>
>>> uniques = []
>>> for i in range(4500): # You can see I was optimistic.
... x = randint(500, 5000)
... if x in uniques:
... raise Exception('We duped %d at iteration number %d' % (x, i))
... uniques.append(x)
...
Traceback (most recent call last):
File "<stdin>", line 4, in <module>
Exception: We duped 887 at iteration number 7
Run Code Online (Sandbox Code Playgroud)
我尝试了大约10倍以上,我得到的最好结果是在转发器之前迭代了121次.这是您从标准库中获得的最佳结果吗?
我正在和朋友一起开展一个项目,我们需要生成一个随机哈希.在我们有时间讨论之前,我们都提出了不同的方法,因为他们使用不同的模块,我想问你所有更好的东西 - 如果有这样的话.
hashlib.sha1(str(random.random())).hexdigest()
Run Code Online (Sandbox Code Playgroud)
要么
os.urandom(16).encode('hex')
Run Code Online (Sandbox Code Playgroud)
输入这个问题让我觉得第二种方法更好.简单比复杂更好.如果您同意,那么"随机"生成哈希值有多可靠?我该如何测试?
我是c和c ++的新手.在我用来编程的语言java中,它很容易实现随机数生成.只需从名为Math的类中调用静态随机方法.
int face = ((int)(Math.random() * 6) + 1);
Run Code Online (Sandbox Code Playgroud)
模拟掷骰子......
在c和c ++中,你必须通过调用srand-function 来"播种随机数生成器"
srand ( time(NULL) );
Run Code Online (Sandbox Code Playgroud)
这样做有什么意义 - 我的意思是每次运行代码时都必须为随机数生成器播种?