【发布时间】:2013-02-14 12:46:39
【问题描述】:
如何最好地制作一个 Container 类,该类根据在添加元素期间输入的权重返回随机值?
理想情况下它应该像这样使用:
var randomContainer = new RandomContainer<IThing>();
randomContainer.Add(new CoolThing(), 80);
randomContainer.Add(new AwesomeThing(), 20);
IThing thing = randomContainer.Get();
所以事物有 80% 的机会成为 CoolThing 和 20% 的机会成为 AwesomeThing。
但算法不应该要求权重加起来为 100,所以这也应该是可能的:
var randomContainer = new RandomContainer<IThing>();
randomContainer.Add(new CoolThing(), 398);
randomContainer.Add(new AwesomeThing(), 485);
randomContainer.Add(new SpecialThing(), 1);
IThing thing = randomContainer.Get();
任何想法如何实现这样的算法?类应该有哪些成员/属性?实现ICollection有意义吗?
【问题讨论】:
标签: c# algorithm random containers