Javascript 如何输入一个数字并输出一个随机数,如果在不同的机器上给定相同的ID,如何保持输出相同
目前,我正在使用scriptish编写一个小脚本,它接收一个用户ID(目前在我们的论坛上,我们的用户ID为1到63),并使用以下函数使用随机颜色对其进行着色:Javascript 如何输入一个数字并输出一个随机数,如果在不同的机器上给定相同的ID,如何保持输出相同,javascript,random,colors,Javascript,Random,Colors,目前,我正在使用scriptish编写一个小脚本,它接收一个用户ID(目前在我们的论坛上,我们的用户ID为1到63),并使用以下函数使用随机颜色对其进行着色: function setNickColor(nick) var spans = nick.getElementsByTagName('span'); var uid = nick.getAttribute('hovercard-id'); if (colors[uid] == null) storeColor(uid, Mat
function setNickColor(nick)
var spans = nick.getElementsByTagName('span');
var uid = nick.getAttribute('hovercard-id');
if (colors[uid] == null)
storeColor(uid, Math.random().toString(15).substring(2,8));
这将为安装脚本的每个人分别生成一个24位的随机颜色(对于rgb颜色)。我希望每个ID生成一个固定的随机颜色。我不知道如何将ID放入函数中,使其仍然是随机的,但仍然生成随机颜色
我看过seeds,但有点难以理解它们的作用,因为我对javascript非常陌生。“固定”和“随机”是两个截然相反的东西。忘记随机。根据你的描述,你真的只想要“固定”
现在来看解决方案:对ID进行任意哈希,然后将其减少到3个字节,以形成与该ID对应的RGB值。在我看来,解决方案有两个主要部分:
固定和随机不在一起。谢谢你的回答。我一直在谷歌搜索,似乎所有的哈希函数对于我的需要都过于复杂。你特别推荐任何哈希函数吗(据我所知,没有原生哈希函数?)提示:搜索“校验和”"同样。在这种情况下,它与哈希相同。这个关于快速校验和的问题有链接到CRC32的JS实现,这对于您的目的应该足够了:我觉得Oleg建议的哈希函数是目前最好的解决方案。但是,据我所知,javascript中没有本机哈希函数?每次我在google上blic哈希代码,对于我的需求来说太复杂了,结果比我原来的代码要大。你有什么建议来缓解这个问题吗?你的意思是除了#1和#2?:)不幸的是,我几乎没有使用Web服务的经验。这实际上是我的最终计划(用户可以在发送给heroku的浏览器中设置他们的颜色),但现在我只想在扩展之前坚持使用一个简单的解决方案,因为我的javascript体验是在3小时前开始的。最简单的选项是#2,使用javascript设置cookie。不幸的是,代码不适合我自己,它正在被其他大约10个人使用,我希望它对每个人都是一样的