2012-03-05 84 views
1

我想为我的系统上的每个用户显示一个随机图像。但是,特定用户每次都必须始终收到相同的随机图像,因此如果需要,我必须能够生成图像标识。将MD5哈希映射到一组整数

我正在考虑使用用户名的MD5来生成一个数字。我的系统使用JavaScript,我正在使用jQuery库。

例如,如果有所述随机图像的4个变型中,我想在名称中通过作为这样和接收一个整数。

$image_id = getImage(name); 

注:没有必要的概率是准确的。即如果其中一幅图像比其他图像更受欢迎,则不会引起我的注意。

回答

0

简易地图字符串转换成一个整数函数

好吧,我写我自己的小功能。希望对某人有用。

函数求和炭码用于每个所述串中的字符的,然后使用模量的数量减少到规定的最大范围内。似乎很有效。

N.b.它不是数学上的随机数,但它对于从字符串中选择可重复的随机选项非常有用。

function getMappedCode(string, max_number_desired) 
{ 
    var char_code_total = 0; 
    for(var i = 0; i < string.length; i++) { 
    char_code_total += string.charCodeAt(i); 
    } 
    return char_code_total % max_number_desired; 
} 

var mapped_code = getMappedCode("tom finney", 10); 

alert(mapped_code); 
1

你需要的是一个JavaScript随机函数,它也接受一个种子。然后,您可以创建用户名的数字版本(或使用其ID#),并将其作为种子传递给您的新功能。

没有为这里做这个贴的方法:Seedable JavaScript random number generator

一旦你这样做,你会一次比一次相同的随机数生成。从那里,你可以选择这个随机数从一组图像中选择一个索引。

+0

难道还没有比这更简单的方法吗?这些功能背后的数学看起来没有必要。 – 2012-03-06 14:41:15

+0

@JonWinstanley,当然,但你暗示你想要随机,所以是的,所有这些都是必要的。 – Brad 2012-03-06 15:16:27

+0

我最终制作了自己的版本。它也有点作用。这很好。 – 2012-03-14 17:46:56