2012-03-05 3 views
1

시스템의 각 사용자에 대해 임의의 이미지를 표시하고 싶습니다. 그러나 특정 사용자는 매번 동일한 임의의 이미지를 항상 받아야하므로 필요할 경우 이미지 ID를 생성 할 수 있어야합니다.MD5 해시를 정수 집합에 매핑

사용자 이름의 MD5를 사용하여 숫자를 생성 할 생각입니다. 제 시스템에서 JavaScript를 사용하고 jQuery 라이브러리를 사용하고 있습니다.

예를 들어 임의 이미지가 4 가지 변형 된 경우이 이름을 전달하고 정수를 수신하고 싶습니다.

$image_id = getImage(name); 

참고 : 확률이 정확할 필요는 없습니다. 나는. 이미지 중 하나가 다른 이미지보다 더 인기가 있다면 그것은 나를 걱정하지 않습니다.

답변

0

문자열을 정수형 함수에 매핑하십시오.

좋아, 제 자신의 작은 함수를 작성했습니다. 희망은 누군가에게 유용합니다.

이 함수는 문자열의 각 문자에 대한 char 코드를 합한 다음 모듈러스를 사용하여 지정된 최대 값 이내로 숫자를 줄입니다. 꽤 효과적 인 것 같습니다.

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

더 간단한 방법이 없습니까? 이러한 함수 중 일부 뒤에있는 수학은 불필요한 것처럼 보입니다. –

+0

@JonWinstanley 물론 그렇습니다.하지만 당신은 무작위로 원했다는 것을 암시합니다. 그렇습니다. 모든 것들이 필요합니다. – Brad

+0

결국 내 버전을 만들었습니다. 그것은 다소 효과가있다. 어느 쪽이 좋다. –

관련 문제