oro*_*aki 6 random math uuid unique unique-key
我对统计数学等不太了解.我一直在想,如果我使用以下内容:
import uuid
unique_str = str(uuid.uuid4())
double_str = ''.join([str(uuid.uuid4()), str(uuid.uuid4())])
Run Code Online (Sandbox Code Playgroud)
被double_str
串平方独特的unique_str
或只是一些量更独特之处?此外,做这样的事情(比如生日问题情况等)是否有任何负面影响?这可能听起来无知,但我根本不会知道,因为我的数学充其量只能代数代数2.
Mar*_*ers 18
该uuid4
函数返回一个由16个随机字节创建的UUID,它极不可能产生冲突,甚至可能不应该担心它.
如果由于某种原因uuid4
确实产生了重复,则更有可能是编程错误,例如无法正确初始化随机数生成器而不是真正的坏运气.在这种情况下,您使用它的方法不会使它更好 - 即使您的方法,错误初始化的随机数生成器仍然可以产生重复.
如果您使用默认实现,random.seed(None)
您可以在源代码中看到只使用16字节的随机性来初始化随机数生成器,因此这是您必须首先解决的问题.此外,如果OS不提供随机源,则将使用系统时间,该系统时间根本不是随机的.
但是忽略这些实际问题,你基本上是在正确的方向.要使用数学方法,我们首先必须通过"唯一性"来定义您的意思.我认为合理的定义是在生成重复的概率超过某个概率之前需要生成的id的数量p
.一个适用的公式是:
这里d
是2**(16*8)
单个随机生成的UUID和2**(16*2*8)
您的建议的方法.公式中的平方根确实是由于生日悖论.但是如果你解决了这个问题,你可以看到,如果你d
在保持p
不变的同时对数值范围进行平方,那么你也可以正方形n
.
归档时间: |
|
查看次数: |
7712 次 |
最近记录: |