我想建立一个客户端A / B测试库。
每个用户都有一个存储在cookie中的随机数。每个测试都有一个测试名称和一组选项。我需要一个函数,根据用户的随机数,测试名称和选项选择一个随机选项。当然,对于给定的一组输入,函数必须始终返回相同的选项。
如何在JavaScript中编写此函数?
答案 0 :(得分:4)
我当前的解决方案使用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];
}
答案 1 :(得分:1)
也许稍后有点夸张,因为有问题的lib有很多你可能不会使用的功能,但我总是把它包含在我的项目中,所以让我公开我的解决方案你遇到的同样问题。这个lib可以用种子(chancejs#seed)初始化,对于创建可重复的结果非常有用:
const Chance = require('chance');
c1 = Chance('email@gmail.com', 'maybe a uuid here');
c1.integer();
c1.natural({min:1000,max:9999});
c2 = Chance('foo-baz-bar');
c2.string();
c2.word();
...
希望这会有所帮助。
答案 2 :(得分:0)
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;
}