클라이언트 측 A/B 테스트 라이브러리를 만들고 싶습니다.JavaScript에서 문자열의 난수 생성
각 사용자는 쿠키에 저장된 임의 번호를가집니다. 각 테스트에는 테스트 이름과 옵션 배열이 있습니다. 사용자의 난수, 테스트 이름 및 옵션이 지정된 임의의 옵션을 선택하는 함수가 필요합니다. 물론 함수는 주어진 입력 집합에 대해 항상 동일한 옵션을 반환해야합니다.
어떻게이 기능을 JavaScript로 작성할 수 있습니까?
클라이언트 측 A/B 테스트 라이브러리를 만들고 싶습니다.JavaScript에서 문자열의 난수 생성
각 사용자는 쿠키에 저장된 임의 번호를가집니다. 각 테스트에는 테스트 이름과 옵션 배열이 있습니다. 사용자의 난수, 테스트 이름 및 옵션이 지정된 임의의 옵션을 선택하는 함수가 필요합니다. 물론 함수는 주어진 입력 집합에 대해 항상 동일한 옵션을 반환해야합니다.
어떻게이 기능을 JavaScript로 작성할 수 있습니까?
내 현재 솔루션은 난수 생성하는 CryptoJS library's MD5 해시 함수를 사용하여, 조금 나중에 아마
// seed is the user's random number
choose_option = function(seed, test_name, options) {
word = CryptoJS.MD5("" + seed + test_name).words[0]; // take first 32-bit word
i = Math.abs(word % options.length);
return options[i];
}
var availNum= [1, 4, 5, 6, 7, 8, 12];
//@var count number of random num you want
function createRandomData(count) {
var data = [],
for (var i = 0; i < count; i++) {
var random = availNum[Math.floor(Math.random() * availNum.length)],
data.push({
random:random
});
}
return data;
}
왜 숫자에 문자열을 사용하고 있습니까? – Brad
죄송합니다. @Brad를 변경했습니다. –
문제의 lib 디렉토리와 같은 비트 exagerate 사용하지 수있는 많은 기능이 있습니다를하지만, 저는 항상 이것을 내 프로젝트에 포함 시키므로 저의 해결책을 당신이 가진 바로 그 문제에 드러내도록하겠습니다. 이 도움이
const Chance = require('chance');
c1 = Chance('[email protected]', 'maybe a uuid here');
c1.integer();
c1.natural({min:1000,max:9999});
c2 = Chance('foo-baz-bar');
c2.string();
c2.word();
...
희망이 lib가 시드 (chancejs#seed), 반복 가능한 결과를 만들기위한 매우 유용한로 initalized 할 수 있습니다.
귀하의 요구 사항에 따라 완벽하게 들릴 것입니다.이 기술에 대해 특별한 이의가 있습니까? 아니면 그 밖의 것이 있으면 궁금합니까? – Bubbles
@Bubbles 나는 외부 라이브러리에 대한 의존성을 필요로하지 않는 더 단순한 것이 있기를 바라고있다. 또한 테스트간에 통계적 편차 나 의존성을 도입했는지 걱정됩니다. –
또한 특정 범위의 숫자를 생성 할 수도 있습니다. 참조 : http://stackoverflow.com/questions/15034013/generate-a-number-in-a-specific-range-from-a-checksum –