如果你想要单一模式分配(如果这种偏差只是集中在你人数的某个特定价值上,例如,正如你指出的3个),那么由oke子提供的答复是好的,因为它使你能够非常准确地调整偏离。
然而,如果你想作出一些偏颇的表示,例如,你想要进行三式分配,其编号为A、(a+b)/2和比其他人更经常,而执行加权随机选择则好。
a 最近关于StackOverflow的问题;其复杂性是直线性的。 采用这种算法,你将仅保留一份清单,初步清单包括{a, a+1, a+2,..., b-1, b}(大小 b-a+1),如果你想增加一个偏见,来对待。 第十,根据你想要多少偏见,你会向名单上的X多份。 然后从名单上抽取一个随机项目。
如果你想要提高效率的话,最有效的方法被称为“Alias”方法,即:,在Denis Bzowy的严格实施;一旦对你的阵列进行了预先处理,便会随时进行(但这意味着,一旦你做初步处理后,你会再更新偏见。
The downside with both techniques is that unlike with the Gaussian distribution, biasing towards X, will not bias also somewhat towards X-1 and X+1. To simulate this effect you would have to do something such as
def addBias(x, L):
L = concatList(L, [x, x, x, x, x])
L = concatList(L, [x+2])
L = concatList(L, [x+1, x+1])
L = concatList(L, [x-1,x-1,x-1])
L = concatList(L, [x-2])