影响随机化

时间:2013-04-27 00:34:59

标签: c# .net list random probability

我真的很抱歉,我会搜索我的问题,但我不知道如何正确地说出来,我的心理数学问题很严重,而且我一直试图想出一个解决方案。我正在尝试为我的公会建立一个程序,它将为列表添加名称。此列表为每个条目都有一个并行结构,用于保存个人姓名和抽奖活动的数量。

我想通过所有名字随机化,并且结果会受到人们捐赠数量的积极影响。喜欢可能性增加1%或1%*捐赠数量。我以前做过随机化,但我从来没有必要稍微影响一下。请帮帮我?我会发布代码,但我当时没有任何随机化。我可以给你一些其他的东西:

我创建了一个结构来保存每个用户的条目:

    public struct pEntry
    {
        public string Name;
        public int Entries;
    }

我列出了所有条目:

    public List<pEntry> lEntries = new List<pEntry>();

我希望我的随机化能够受到他们所做的参赛作品(捐赠)的积极影响。它没有关于它可以达到多高的上限但是如果我需要也许我可以使它像...... 255.A随机化之后它会选择显示一条消息说,该用户赢了,它将从列表中删除该条目并选择一些。这个程序将用于多个抽奖活动和类似的事情,但都使用相同的系统。

1 个答案:

答案 0 :(得分:2)

你需要知道多少捐款会增加获胜的机会。 1 = 1比没有捐赠的人多1次机会吗?一旦你有了基数和奖金,你就可以生成一个“图表”,看看你的头号是什么,并生成一个随机数。之后,你可以移除那个人或重置你想要的任何分数,重新生成你的机会清单,并生成一个新的数字。

例如,如果您希望1个捐赠单位为该人提供10%的机会,那么您可以生成所有公会的列表,每个人每个捐赠单位获得10个“批次”+ 1个批次。所以,如果你有3个人,那里:

  • Ann给了5个捐赠单位
  • 汤姆捐赠了2个捐赠单位
  • 鲍勃没有给任何

结果列表为:

  1. 安手数:10(基数)+5(捐款)= 15手
  2. 汤姆数:10(基数)+ 2(捐款)= 12手
  3. 鲍勃手数:10(基数)+ 0(无捐款)= 10手
  4. 然后您生成1到37之间的数字(15 + 12 + 10)以确定获胜者。

    弄清楚每次捐赠应该提高他们的赔率(他们的手数增加),然后你可以开始建立你的范围并生成你的数字。