3

我想做一个客户端 A/B 测试库。

每个用户都有一个存储在 cookie 中的随机数。每个测试都有一个测试名称和一组选项。我需要一个在给定用户随机数、测试名称和选项的情况下选择随机选项的函数。当然,该函数必须始终为给定的一组输入返回相同的选项。

如何在 JavaScript 中编写此函数?

4

3 回答 3

5

我当前的解决方案使用CryptoJS 库的 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];
}
于 2012-12-20T03:15:57.673 回答
1

也许稍晚一点,有点夸张,因为有问题的 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();
...

希望这可以帮助。

于 2016-11-07T07:50:46.113 回答
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;
}
于 2012-12-20T03:25:09.747 回答