一种离散标识生成方法及装置与流程

文档序号:12124399阅读:223来源:国知局
一种离散标识生成方法及装置与流程

本发明涉及计算机互联网领域,尤其涉及离散标识生成方法以及离散标识生成装置。



背景技术:

随着电子科技以及移动互联网技术的发展,电子设备的功能越来越强大,只要用户按照自身的需求在电子设备上安装各种应用程序或者登陆互联网的应用系统或应用平台,便可以完成各种事务,获取各种信息等等。

当前互联网应用中经常需要使用离散字符串作为ID,例如作为短链接的ID、兑换码的ID、电影券的ID等等,以用在不同的场景。现有技术中,往往通过随机算法生成由大小字母及数字组成的一定位数离散字符串作为ID,随机算法在生成一定的数量之后,容易生成与之前相同的离散字符串,且随着生成数量的增长,相同的会越来越多。



技术实现要素:

本发明实施例所要解决的技术问题在于,提供一种离散标识生成方法以及一种离散标识生成装置,解决现有技术中随机算法在生成一定的数量之后,容易生成与之前相同的离散字符串,且随着生成数量的增长,相同的会越来越多的技术问题。

为了解决上述技术问题,本发明实施例第一方面公开了一种离散标识生成方法,包括:

定义区间数[n,m]以及跨度因子数x;其中所述n、m和x为大于0的正整数,所述n和所述m均为质数,所述x与所述m为互质数;

从所述n开始,通过乘以所述x的方式进行迭代,将每次迭代得到的迭代数对所述m取模生成当次迭代对应的唯一离散数;其中所述迭代数小于等于所述m;

将所述唯一离散数进行预设进制的转换,生成离散标识。

结合第一方面,在第一种可能的实现方式中,所述预设进制为J进制,包括从数字0至9,从字母小写a至z,以及从字母大写A至Z中的任意J个组成的数组;所述J小于等于62。

结合第一方面,在第二种可能的实现方式中,所述定义区间数[n,m],包括:

根据生成离散标识的长度或数量需求,修改所述区间数[n,m]的数值。

结合第一方面的第一种可能的实现方式,或者第一方面的第二种可能的实现方式,在第三种可能的实现方式中,所述将所述唯一离散数进行预设进制的转换,生成离散标识,包括:

从所述唯一离散数开始,通过除以所述J的方式进行迭代,得到每次迭代对应的商和余数;

当迭代后的商小于所述J时,停止迭代,将每次迭代得到余数以及迭代后小于所述J的商作为所述数组的索引来进行所述J进制的转换,得到对应的数字或字母;

通过得到的所述对应的数字或字母组成离散标识。

结合第一方面的第三种可能的实现方式,在第四种可能的实现方式中,所述通过得到的所述对应的数字或字母组成离散标识,包括:

以从每次迭代得到的余数到最后迭代后小于所述J的商的反顺序来排列所述对应的数字或字母,组成离散标识。

本发明实施例第二方面公开了一种离散标识生成装置,包括:

定义模块,用于定义区间数[n,m]以及跨度因子数x;其中所述n、m和x为大于0的正整数,所述n和所述m均为质数,所述x与所述m为互质数;

迭代生成模块,用于从所述n开始,通过乘以所述x的方式进行迭代,将每次迭代得到的迭代数对所述m取模生成当次迭代对应的唯一离散数;其中所述迭代数小于等于所述m;

转换生成模块,用于将所述唯一离散数进行预设进制的转换,生成离散标识。

结合第二方面,在第一种可能的实现方式中,所述预设进制为J进制,包括从数字0至9,从字母小写a至z,以及从字母大写A至Z中的任意J个组成的数组;所述J小于等于62。

结合第二方面,在第二种可能的实现方式中,所述定义模块,具体用于根据生成离散标识的长度或数量需求,修改所述区间数[n,m]的数值。

结合第二方面的第一种可能的实现方式,或者第二方面的第二种可能的实现方式,在第三种可能的实现方式中,所述转换生成模块包括:

迭代单元,用于从所述唯一离散数开始,通过除以所述J的方式进行迭代,得到每次迭代对应的商和余数;

索引转换单元,用于当迭代后的商小于所述J时,停止迭代,将每次迭代得到余数以及迭代后小于所述J的商作为所述数组的索引来进行所述J进制的转换,得到对应的数字或字母;

组成单元,用于通过得到的所述对应的数字或字母组成离散标识。

结合第二方面的第三种可能的实现方式,在第四种可能的实现方式中,所述组成单元,具体用于以从每次迭代得到的余数到最后迭代后小于所述J的商的反顺序来排列所述对应的数字或字母,组成离散标识。

实施本发明实施例,通过定义一个区间数[n,m],从n开始,通过乘以所述x的方式进行迭代,将每次迭代得到的迭代数对m取模即可生成当次迭代对应的唯一离散数,解决了现有技术中随机算法在生成一定的数量之后,容易生成与之前相同的离散字符串,且随着生成数量的增长,相同的会越来越多的技术问题;并且用户可以根据自身需求来任意调整n和m的大小,可以定义一个很大且足够使用的区间数,将生成的唯一离散数进行预设进制的转换,生成离散标识,从而可以生成唯一且不重复的一组离散字符串作为ID。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例提供的离散标识生成方法的流程示意图;

图2是本发明提供的离散标识生成方法的另一实施例的流程示意图;

图3是本发明实施例提供的离散标识生成装置的结构示意图;

图4是本发明实施例提供的转换生成模块的结构示意图;

图5是本发明提供的离散标识生成装置的另一实施例的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明各个实施例可以基于某电子设备或终端来实施,该电子设备包括但不限于个人计算机、个人数字助理(Personal Digital Assis tant,PDA)、媒体播放器、智能移动设备(包括移动电话、移动电脑、平板电脑、智能电视、智能手表、智能眼镜和智能手环等)等设备。通过该电子设备,用户在编写应用于互联网的代码时,采用本发明实施例提供的离散标识生成方法可以快速便利地生成任意多个不重复的离散标识。

具体地,图1示出的本发明实施例提供的离散标识生成方法的流程示意图,包括如下步骤:

步骤S100:定义区间数[n,m]以及跨度因子数x;

具体地,本发明各个实施例中的n、m和x为大于0的正整数,该n和该m均为质数,该x与该m为互质数。

步骤S102:从所述n开始,通过乘以所述x的方式进行迭代,将每次迭代得到的迭代数对所述m取模生成当次迭代对应的唯一离散数;

具体地,可以通过以下公式来进行迭代:

(v*x)%m

其中,v为每次迭代后的迭代数,例如n为99,x为7,那么v的初始值即为n,即99,本次进行迭代v*x为99*7,本次的迭代数为99*7=693,该693作为下一次迭代的v,也就是说下一次进行迭代v*x为693*7,得到的迭代数再作为下一次迭代的v,以此通过乘以所述x的方式进行迭代,并将每次迭代得到的迭代数对该m取模生成当次迭代对应的唯一离散数,直到迭代数小于等于该m,也就是说本发明实施例中的迭代数小于等于该m;

步骤S104:将所述唯一离散数进行预设进制的转换,生成离散标识。

具体地,本发明实施例中预设进制可以为16进制、30进制、56进制、60进制、62进制等等,可以为从数字0至9,从字母小写a至z,以及从字母大写A至Z中的任意J个组成的数组,该J小于等于62,本发明不作限制,且数组的排列顺序也不作限制,只要用户按照自身需求或某一顺序规则进行预先设定即可。在步骤S102得到各个唯一离散数后,可以分别对每个唯一离散数进行该预设进制的转换,从而生成离散标识,该离散标识可以为由数字0至9、大小写字母组成的字符串。

实施本发明实施例,通过定义一个区间数[n,m],从n开始,通过乘以所述x的方式进行迭代,将每次迭代得到的迭代数对m取模即可生成当次迭代对应的唯一离散数,解决了现有技术中随机算法在生成一定的数量之后,容易生成与之前相同的离散字符串,且随着生成数量的增长,相同的会越来越多的技术问题;并且用户可以根据自身需求来任意调整n和m的大小,可以定义一个很大且足够使用的区间数,将生成的唯一离散数进行预设进制的转换,生成离散标识,从而可以生成唯一且不重复的一组离散字符串作为ID。

进一步地,图2示出的本发明提供的离散标识生成方法的另一实施例的流程示意图,包括如下步骤:

步骤S200:定义区间数[n,m]以及跨度因子数x;

步骤S202:从所述n开始,通过乘以所述x的方式进行迭代,将每次迭代得到的迭代数对所述m取模生成当次迭代对应的唯一离散数;

具体地,步骤S200和S202可以对应参考上述图1实施例中的步骤S100和S102,这里不再赘述。

步骤S204:从所述唯一离散数开始,通过除以所述J的方式进行迭代,得到每次迭代对应的商和余数;

具体地,假如某唯一离散数为L,那么将L÷J,得到商S1,余数Y1;判断商S1是否小于J,若否,则继续将S1L÷J,得到商S2,余数Y2;以此迭代下去,得到每次迭代对应的商和余数。若商小于J,则停止迭代。

步骤S206:当迭代后的商小于所述J时,停止迭代,将每次迭代得到余数以及迭代后小于所述J的商作为所述数组的索引来进行所述J进制的转换,得到对应的数字或字母;

具体地,假如某唯一离散数为6666,J为62,那么6666÷62,得到商107,余数32;判断商107是否小于62,若否,则继续将107÷62,得到商1,余数45;此时判断出商1小于62,则停止迭代。每次迭代得到的余数分别为32和45,迭代后小于62的商为1,也就是说,将32、45和1作为数组的索引来进行J进制的转换,得到对应的数字或字母。

步骤S208:通过得到的所述对应的数字或字母组成离散标识。

具体地,例如将32作为数组的索引来进行J进制的转换得到A,将45作为数组的索引来进行J进制的转换得到h,将1作为数组的索引来进行J进制的转换得到8,那么A、h和8可以按照任一顺序组成离散标识,比如组成Ah8、hA8或8Ah等等离散标识。

进一步地,可以以从每次迭代得到的余数到最后迭代后小于所述J的商的反顺序来排列所述对应的数字或字母,组成离散标识。具体地,同样以上述的某唯一离散数6666为例,从每次迭代得到的余数到最后迭代后小于J的商的顺序排列依次为32、45和1,那么反顺序即为1、45和32,因此对应的数字或字母组成的离散标识为8hA。

需要说明的是,优选地本发明实施例的J为62,即该J包括从数字0至9,从字母小写a至z,以及从字母大写A至Z的所有数字和字符。但数组的排列顺序可以不作限制,例如,本发明实施例可以定义一个62进制数组(abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ),那么在LINUX C++描述可以如下:

std::string g_strChars[]={"a","b","c","d","e","f","g","h",

"i","j","k","l","m","n","o","p",

"q","r","s","t","u","v","w","x",

"y","z","0","1","2","3","4","5",

"6","7","8","9","A","B","C","D",

"E","F","G","H","I","J","K","L",

"M","N","O","P","Q","R","S","T",

"U","V","W","X","Y","Z"};

该"a"即为代表余数0的字符,从该"b"到该"Z"即为代表余数或商从1-31的字符;那么,同样以上述的某唯一离散数6666为例,从每次迭代得到的余数到最后迭代后小于J的商的顺序排列依次为32、45和1,那么反顺序即为1、45和32,那么对应上述数组可以得到bJ6,从而组成最终的字符串bJ6作为离散标识。

还需要说明的是,本发明实施例中定义区间数[n,m]的步骤可以包括根据生成离散标识的长度或数量需求,修改所述区间数[n,m]的数值。也就是说,例如用户当前想生成位数较多的离散标识,那么可以修改n为位数较多的数字,例如修改n为99999999等。因此,通过根据生成离散标识的长度或数量需求,修改区间数[n,m]的数值,可以使用户更加快速地调整离散标识的生成策略,更加便捷地得到所需的离散标识。

实施本发明实施例,通过定义一个区间数[n,m],从n开始,通过乘以所述x的方式进行迭代,将每次迭代得到的迭代数对m取模即可生成当次迭代对应的唯一离散数,解决了现有技术中随机算法在生成一定的数量之后,容易生成与之前相同的离散字符串,且随着生成数量的增长,相同的会越来越多的技术问题;并且用户可以根据自身需求来任意调整n和m的大小,可以定义一个很大且足够使用的区间数,将生成的唯一离散数进行预设进制的转换,生成离散标识,从而可以生成唯一且不重复的一组离散字符串作为ID。

为了便于更好地实施本发明实施例的上述方案,本发明还对应提供了一种离散标识生成装置,下面结合附图来进行详细说明:

如图3示出的本发明实施例提供的离散标识生成装置的结构示意图,离散标识生成装置30可以包括:定义模块300、迭代生成模块302和转换生成模块304,其中,

定义模块300用于定义区间数[n,m]以及跨度因子数x;其中所述n、m和x为大于0的正整数,所述n和所述m均为质数,所述x与所述m为互质数;

迭代生成模块302用于从所述n开始,通过乘以所述x的方式进行迭代,将每次迭代得到的迭代数对所述m取模生成当次迭代对应的唯一离散数;其中所述迭代数小于等于所述m;

转换生成模块304用于将所述唯一离散数进行预设进制的转换,生成离散标识。

具体地,本发明实施例的预设进制为J进制,包括从数字0至9,从字母小写a至z,以及从字母大写A至Z中的任意J个组成的数组;所述J小于等于62。

进一步地,定义模块300,具体可以用于根据生成离散标识的长度或数量需求,修改所述区间数[n,m]的数值。

再进一步地,如图4示出的本发明实施例提供的转换生成模块的结构示意图,转换生成模块304可以包括迭代单元3040、索引转换单元3042和组成单元3044,其中,

迭代单元3040用于从所述唯一离散数开始,通过除以所述J的方式进行迭代,得到每次迭代对应的商和余数;

索引转换单元3042用于当迭代后的商小于所述J时,停止迭代,将每次迭代得到余数以及迭代后小于所述J的商作为所述数组的索引来进行所述J进制的转换,得到对应的数字或字母;

组成单元3044用于通过得到的所述对应的数字或字母组成离散标识。

具体地,组成单元3044具体可以用于以从每次迭代得到的余数到最后迭代后小于所述J的商的反顺序来排列所述对应的数字或字母,组成离散标识。

需要说明的是,本发明实施例中的离散标识生成装置30中各模块的功能可对应参考上述各方法实施例中图1至图2任意实施例的具体实现方式,这里不再赘述。

请参阅图5,图5是本发明提供的离散标识生成装置的另一实施例的结构示意图。其中,如图5所示,视频编码装置50可以包括:至少一个处理器501,例如CPU,至少一个网络接口504,用户接口503,存储器505,至少一个通信总线502,可选地,还可以包括显示屏506。其中,通信总线502用于实现这些组件之间的连接通信。其中,用户接口503可以包括触摸屏、键盘或鼠标等等。网络接口504可选的可以包括标准的有线接口、无线接口(如WI-FI接口),通过网络接口504可以与服务器建立通信连接。存储器505可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器,存储器505包括本发明实施例中的flash。存储器505可选的还可以是至少一个位于远离前述处理器501的存储系统。如图5所示,作为一种计算机存储介质的存储器505中可以包括操作系统、网络通信模块、用户接口模块以及离散标识生成程序。

处理器501可以用于调用存储器505中存储的离散标识生成程序,并执行以下操作:

定义区间数[n,m]以及跨度因子数x;其中所述n、m和x为大于0的正整数,所述n和所述m均为质数,所述x与所述m为互质数;

从所述n开始,通过乘以所述x的方式进行迭代,将每次迭代得到的迭代数对所述m取模生成当次迭代对应的唯一离散数;其中所述迭代数小于等于所述m;

将所述唯一离散数进行预设进制的转换,生成离散标识。

具体地,预设进制为J进制,包括从数字0至9,从字母小写a至z,以及从字母大写A至Z中的任意J个组成的数组;所述J小于等于62。

具体地,处理器501定义区间数[n,m],可以包括:

根据生成离散标识的长度或数量需求,修改所述区间数[n,m]的数值。

具体地,处理器501将所述唯一离散数进行预设进制的转换,生成离散标识,可以包括:

从所述唯一离散数开始,通过除以所述J的方式进行迭代,得到每次迭代对应的商和余数;

当迭代后的商小于所述J时,停止迭代,将每次迭代得到余数以及迭代后小于所述J的商作为所述数组的索引来进行所述J进制的转换,得到对应的数字或字母;

通过得到的所述对应的数字或字母组成离散标识。

具体地,处理器501通过得到的所述对应的数字或字母组成离散标识,可以包括:

以从每次迭代得到的余数到最后迭代后小于所述J的商的反顺序来排列所述对应的数字或字母,组成离散标识。

需要说明的是,本发明实施例中的离散标识生成装置50包括但不限于个人计算机、移动电脑、平板电脑、移动电话、个人数字助理(Personal Digital Assistant,PDA)、智能电视、智能手表、智能眼镜、智能手环等可编写应用于互联网的代码的电子设备。

综上所述,实施本发明实施例,通过定义一个区间数[n,m],从n开始,通过乘以所述x的方式进行迭代,将每次迭代得到的迭代数对m取模即可生成当次迭代对应的唯一离散数,解决了现有技术中随机算法在生成一定的数量之后,容易生成与之前相同的离散字符串,且随着生成数量的增长,相同的会越来越多的技术问题;并且用户可以根据自身需求来任意调整n和m的大小,可以定义一个很大且足够使用的区间数,将生成的唯一离散数进行预设进制的转换,生成离散标识,从而可以生成唯一且不重复的一组离散字符串作为ID。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。

以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1