guid php 截取20位 是否还是唯一?如果不是该怎么确保它唯一?

目前我就想用php写一个guid生成的CDKey,并且只生成20位,要确保它唯一。
有没有大神帮个忙回答下~

php

2个回答

理论上,任何定长度的编码,都不能做到唯一。因为它的总编码是有限的。只是这个值非常非常大。
在工程上,我们可以将重复概率极小,可以忽略不计的编码视作是唯一的。guid就是这个,要让这个概率低,那么取决于两点,一个是充分的随机化,一个是编码长度要长。

结论就是,guid截取20位提高了重复的概率,但是在一定程度上仍然可以视作是唯一的。比如说你的软件卖100万份,这个很多了吧。有100万个key
100万也就是10的6次方。16的5次方。
20位guid的总编码数是 16的20次方。
重复的概率可以算出来,等于16的15次方,也就是100万的3次方。

caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 回复qq_39816804: 每1000000000000000000000000个会重复1个。这是多少呢?简单来说这个数字不会比地球上的沙子数少
大约 2 年之前 回复
qq_39816804
qq_39816804 恩 不能确保它唯一 只是说重复的几率太小了。 我在网上找到一些关于php guid 生成20位的方法,就是不知道把它用作一个游戏的CDKey礼包合不合适,怕产生重复的CDKey,有影响。
大约 2 年之前 回复

我举一个例子,把一根针丢到太平洋和丢到印度洋,找到它的概率明显后者更高,但是在工程上看,都可以视作不可能找到。但是在理论上,都是能找到的。对吧。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐