【发布时间】:2016-11-11 09:26:36
【问题描述】:
我希望从一个人列表中挑选一个人,其中列表中的每个项目都有一定的“权重”。假设 Person 类有必要的构造函数。
public class Person {
public string Name { get; set; }
public float Weighting { get; set; }
}
public List<Person> People = new List<Person>();
People.Add(new Person("Tim", 1.0));
People.Add(new Person("John", 2.0));
People.Add(new Person("Michael", 4.0));
现在,我想从这个列表中随机选择一个人。但平均而言,我选择迈克尔的次数比蒂姆多 4 倍。而且我想像迈克尔一样经常选择约翰一半(2/4)。当然,我想像约翰一样经常选择迈克尔。
这有意义吗?
我已经有了根据百分比选择人员的代码。如果我只是将它们的 %chance 乘以本示例中提供的权重,它不会起作用吗?
另外,我目前的系统只能在高达 100% 的情况下工作,以上都没有。有关如何克服此限制的任何建议?我可能不得不根据列表中最大的因素来衡量每个机会?
public static bool Hit(double pct) {
if (rand == null)
rand = new Random();
return rand.NextDouble() * 100 <= pct;
}
还是我错过了什么?
【问题讨论】:
-
你的问题有点含糊,不太适合这个论坛,但我看不出你建议的方法有什么问题。建议您先尝试一些东西,然后如果它不起作用,您可以回到这里(或更合适的论坛)并就特定编码问题提出特定问题。
标签: c# math statistics probability