【发布时间】:2013-04-21 06:10:33
【问题描述】:
真的很抱歉,我会搜索我的问题,但我不知道如何正确表达,我的心算有一个很大的问题,我一直在想一个解决方案。我正在尝试为我的公会构建一个程序,将名称添加到列表中。这个列表对于每个条目都有一个并行结构,其中包含该人的姓名和对抽奖的捐赠数量。
我想对所有名字进行随机化,并让结果受到人们投入的捐款数量的积极影响。喜欢增加 1% 或 1% 的可能性 * 捐款数量。我以前做过随机化,但我从来不需要稍微影响几率。请帮帮我?我会发布代码,但当时我没有任何随机化。不过我可以给你一些其他的东西:
我制作了一个结构来保存每个用户的条目:
public struct pEntry
{
public string Name;
public int Entries;
}
我做了一个列表来保存所有条目:
public List<pEntry> lEntries = new List<pEntry>();
我希望我的随机化能够受到他们所做的条目(捐赠)数量的积极影响。这对它可以走多高没有上限,但如果我需要,也许我可以让它像.. 255.它随机化后会选择显示一条消息,说明该用户赢了,它将从列表中删除该条目并选择更多。该程序将用于多次抽奖等类似活动,但都使用相同的系统。
【问题讨论】:
-
为什么不只是一个字符串列表;买两张票的人会被列入名单两次。如果他们买了三张票,他们就会被列入名单三次。然后只需从列表中选择一个随机项目。毕竟,这就是它与真正的纸质门票的实际运作方式。
-
如果你需要一些快速而肮脏的东西,你可以为他们所做的每个条目添加一个进入临时数组。然后您可以随机化该集合的索引。编辑:@EricLippert 打败了我 =)
-
还要注意,如果这里有大笔资金,那么您应该使用加密安全的随机源。 Math.Random 生成的“随机”数字实际上是高度可预测的;它们只是伪随机的。
-
哈哈,你们太棒了。是的,我想我过于复杂了,我会尝试一个唯一的 UID 以避免重复。谢谢你,我真的很感激:)
-
这个问题的措辞听起来好像每个人都有一个基本的获胜“机会”(即免费彩票),他想根据捐款的大小来产生奖金机会,但不是这样捐赠 10 个单位的人将获得 11 次机会(即 1 张免费票和 10 张奖励票)。但他需要确定捐赠的金额究竟有多大,才能增加计算出他需要的数学的机会。
标签: c# .net list random probability