Javascript 以确定性的方式变换数字

Javascript 以确定性的方式变换数字,javascript,algorithm,hash,sequence,Javascript,Algorithm,Hash,Sequence,我有以下问题: 给定一个任意数字序列,比如说5-10个数字,以及一个种子数,比如说5、16或56。预期结果是一组数字序列。集合的大小是种子数。例如,种子数是5,这意味着我们有一个{1,2,3,4,5}的种子集,对于每个种子,我们只能从原始序列生成一个确定且唯一的数字序列 有没有用JavaScript实现的哈希函数或库可以实现这一点?非常感谢 一个任意数字序列,比如说5-10个数字,和一个种子数,比如说5、16或56。预期结果是一组数字序列。集合的大小是种子数。例如,种子数是5,这意味着我们有一个

我有以下问题: 给定一个任意数字序列,比如说5-10个数字,以及一个种子数,比如说5、16或56。预期结果是一组数字序列。集合的大小是种子数。例如,种子数是5,这意味着我们有一个{1,2,3,4,5}的种子集,对于每个种子,我们只能从原始序列生成一个确定且唯一的数字序列

有没有用JavaScript实现的哈希函数或库可以实现这一点?非常感谢

一个任意数字序列,比如说5-10个数字,和一个种子数,比如说5、16或56。预期结果是一组数字序列。集合的大小是种子数。例如,种子数是5,这意味着我们有一个种子集{1,2,3,4,5}

理想情况下,你应该尝试这样做,并就结果寻求帮助;询问“有没有/什么是最好的/你知道有什么工具可以做到这一点”是关于堆栈溢出的话题,而询问代码更是如此

如果我理解正确,如果种子大小为3,那么种子集为{1,2,3},需要长度在5到10之间的三位数序列

一种方法是像这样构建数字序列:

2 1 5 . . . .
其中2是表示种子所需的位数(在您的示例中,1或2就可以了),这里15是种子,然后是15的任何散列(可能是盐析的),转换为基数10并截断为所需的长度。JS中有同时执行MD5和SHA1哈希的库。MD5是128位,它给出了大约128/3.32=38位(您也可以使用CRC32,它产生9.6位,但计算种子大小和种子本身,对于10位序列,您实际上只需要8位,因此9.6就足够了)


这意味着所有2位种子编号的序列都将以2开头,但它们将是唯一的和确定的。

非常感谢。你的回答确实给了我一个解决问题的暗示。对我来说,CRC32比MD5和SHA1好。