生成一个0-9的数字。如果数字小于3,给他们第一页。如果少于8页,给他们第二页,否则给他们第三页。
一些代码,让您开始:
private int ChoosePage()
{
int[] weights = new int[] { 3, 5, 2 };
int sum = 0;
int i;
for (i = 0; i < weights.Length; i++)
sum += weights[i];
int selection = (new Random()).Next(sum);
int count = 0;
for (i = 0; i < weights.Length - 1; i++)
{
count += weights[i];
if (selection < count)
return i;
}
return weights.Length - 1;
}
注意,重量不必加在一起,特别是。如果
sum
= 100,那么
weight[i]
百分之十的机会得到网页吗
i
. 然而,如果不是这样,那只是相对的-如果
重量[我]
是两次
weight[j]
然后页
我
点击量是页面的两倍
j
. 这很好,因为您可以随意增加或减少页面流量,而无需重新计算任何内容。或者,您可以确保总金额
N
和硬编码
n
而不是每次求和所有值。我敢肯定,你还可以做更多的优化。