我有一个系统,需要一个唯一的6位代码来表示一个对象,并且我正在尝试一种生成它们的好的算法。以下是先决条件:
我有一个听起来像可行的想法,但我对数学的理解不够,无法确定如何实现:如果我从0开始并以N递增,然后转换为以20为底,那么似乎应该是N的某个值,使我可以在重复任何值之前对0-63,999,999中的每个值进行计数。
例如,使用N = 3(即10 mod 3)从0到9:0、3、6、9、2、5、8、1、4、7。
是否有某种魔术数学方法可以计算出较大的N值,从而可以在整个范围内进行计数而无需重复?理想情况下,我选择的数字会在集合中跳来跳去,以至于没有明显的规律可言,但我不确定这样做的可能性。
另外,一种散列算法可以保证0-64百万之间的唯一性,但是我实在太傻了,无法知道是否可行。
您需要的是一个与密钥空间没有任何因素的数字。最简单的值是使用质数。您可以用Google搜索大素数,或使用http://primes.utm.edu/lists/small/10000.txt