通过取余或者murmur3 hash的简单分流算法

定义样本空间

首先定义一个样本空间,比如[0,100],也就是0到100的闭区间

[
	{
		"percent":20
		"alg":"A"
	},
	{
		"percent":50
		"alg":"B"
	},
	{
		"percent":70
		"alg":"C"
	},
	{
		"percent":100
		"alg":"D"
	},
]

则上面分为[0,20],(21,50],(51,70] , (71,100] 这4个样本区间

简单通过日期获取对应的样本编号
// 取余
int day = Calendar.getInstance().get(Calendar.DAY_OF_MONTH);
Math.abs (day % 100);
// murmur3 hash string
HashFunction hashFunction = Hashing.murmur3_32();
String key = "hello world";
Math.abs(hashFunction.hashBytes(key.getBytes()).asInt() % SamplePoints.SAMPLE_COUNT);
判断样本所在范围

比如今天是6.1号,那么上述取余的结果就是1
在这里插入图片描述
如果通过string 字符串来hash,比如上面的hello world 字符串。那么
在这里插入图片描述
那么再判断下1或者83,所在上面4个区间中的哪一个,再去获取对应的算法即可。
比如,1对应的区间1,算法用A。
83属于算法D的区间。

你可能感兴趣的:(设计模式,Java)