VB程序员博客

VB程序开发

如何产生由数字和英文字母组成的随机序列号
比如:
1WDR45E5I
3R5JIRWWE3B33
4RTY464FERLJT8I

这样一个序列,主要是用在产品的序列号上,一个产品用一个序列号,长度固定或可变都可以,要能产生无数个随机序列号.请各位大侠帮帮忙,小弟VB只懂皮毛.

把你要出现的字母放入数组中,用RND得到数组下标。即可。
在调用   Rnd   之前,先使用无参数的   Randomize   语句初始化随机数生成器,该生成器具有根据系统计时器得到的种子。

为了生成某个范围内的随机整数,可使用以下公式:

Int((upperbound   -   lowerbound   +   1)   *   Rnd   +   lowerbound)

这里,upperbound   是随机数范围的上限,而   lowerbound   则是随机数范围的下限。

像这种号一般都没有O(噢)

Private   Sub   Command1_Click()
        Dim   s   As   String,   t   As   String
        Dim   i   As   Long,   nlen   As   String,   n   As   Long
        s   =   "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ "
        nlen   =   16   '计算16位长度的随机串
        For   i   =   1   To   nlen
                n   =   CLng(Rnd   *   35   +   1)
                t   =   t   &   Mid(s,   n,   1)
        Next
        Debug.Print   t
        Print   t
End   Sub

…………

关键还是要有好的随机生成规则

由yachong(蚜虫)   修改:
Private   Sub   Command1_Click()
        Dim   s   As   String,   t   As   String
        Dim   i   As   Long,   nlen   As   String,   n   As   Long
        Randomize
        s   =   "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ "
        nlen   =   16   '计算16位长度的随机串
        For   i   =   1   To   Rnd   *   35   +   1
                n   =   CLng(Rnd   *   35   +   1)
                t   =   t   &   Mid(s,   n,   1)
        Next
        Print   t
End   Sub

楼上的方法不错..

来转转

用日期序列+时间序列。。
DateSerial+TimeSerial

换个思路行不….?

序列号我直接使用顺序生成,不就行了….也就是生成流水号,像RMB一样

至于贴到你的产品上…….你的产品不会总是顺序卖出去吧??????

Option   Explicit

Private   Declare   Function   CoCreateGuid   Lib   "ole32.dll "   (pGuid   As   GUID)   As   Long
Private   Declare   Function   StringFromGUID2   Lib   "ole32.dll "   (pGuid   As   GUID,   ByVal   PointerToString   As   Long,   ByVal   MaxLength   As   Long)   As   Long
Private   Const   GUID_OK   As   Long   =   0
Private   Type   GUID
        Guid1   As   Long
        Guid2     As   Integer
        Guid3     As   Integer
        Guid4(0   To   7)   As   Byte
End   Type
Public   Function   CreateGUIDKey()   As   String
        Const   GUID_LENGTH   As   Long   =   38
        Dim   udtGUID   As   GUID
        Dim   strFormattedGUID   As   String
        Dim   lngResult   As   Long
        lngResult   =   CoCreateGuid(udtGUID)
        If   lngResult   =   GUID_OK   Then
                strFormattedGUID   =   String$(GUID_LENGTH,   0)
                StringFromGUID2   udtGUID,   StrPtr(strFormattedGUID),   GUID_LENGTH   +   1
        Else
                strFormattedGUID   =   " "
        End   If
        CreateGUIDKey   =   strFormattedGUID
End   Function

调用:
dim   code   as   string
code=CreateGUIDKey

code就是全球唯一序列号了,如果不要里面的“{”和“-”,自己替换成空即可。

好家伙,收藏了…….

嗯,收藏……..

昨天晚上还为了怎么生成uid犯难呢
呵呵,收藏

Mark

收藏

GUID  
MD5

mark

refer   to:
http://www.vbaccelerator.com/home/VB/Tips/Create_GUIDs/article.asp


标签: , , ,