2012-03-05 57 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