首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何创建一个抽奖算法,其中每次抽奖保证一张中奖票?

如何创建一个抽奖算法,其中每次抽奖保证一张中奖票?
EN

Software Engineering用户
提问于 2016-05-05 22:47:56
回答 3查看 3.2K关注 0票数 -2

我正在寻找一个算法来创建一个抽奖,其中每个参与者被分配一个随机的一系列数字的票。

每个抽奖有N个参与者,并且应该有相同数量的抽奖票,每个用户一张票。

在抽签之前,用户应该知道她的票号,这样她就可以跟踪抽签,并预测她是否是赢家。

每次抽奖至少有一名获胜者。

有些抽奖者可以有两张或两张以上的中奖票,而每张票只能赢一张。中奖票将从当前的抽奖中删除。

如果有一个以上的中奖票可用,这应该确定之前开始抽奖。

画空白是不可能的。

如何才能产生这样的财产抽奖。或更具体而言:

我们如何生成抽奖号码,以及这样的票,使每个抽奖有一个或(1+N)保证中奖票。我们怎样才能避免空白?

伪码将是很好的,和/或几个指针,也许是众所周知的算法解决类似的问题。

EN

回答 3

Software Engineering用户

发布于 2016-05-05 23:26:14

如果我明白你想要什么,那么:

代码语言:javascript
复制
create empty list
for 1..N:
    do
        r = random number
    while r in list

    add r to list
    give ticket with r to person

 for number of winners:
    r = random element in list
    announce r as a winner
    remove r from list
票数 2
EN

Software Engineering用户

发布于 2016-05-06 17:57:44

似乎你的问题的难点是在你的评论中,你说你想通过‘绘制’随机个位数并对它们进行梳理来选择获胜的数字。

为了保护胜利者,你必须从一张售票清单中选出一张中奖票。通常情况下,你只需记录一张门票的列表,然后随机选择其中的pick.one,以获得赢家。

然后你就可以一次一个地宣布获胜数字了吗?

但是,如果您想要随机绘制数字,则必须限制可能的结果。即。如果你只卖了1200张票,你只能选择4个号码,而第一个号码只能是1或0等等。

然后,您可能会发现,由此产生的赢数不再是随机的。即。如果你能通过匹配3个号码赢,1和0是很好的选择。

事实上,考虑到这一点,如果您从获奖者名单中选择整个数字,并且允许玩家选择他们的号码,这也适用。

票数 0
EN

Software Engineering用户

发布于 2016-05-06 18:32:54

在车票上有一系列的号码(如。随机给N个参与者,其中N是一个很低的数目(例如。然后设计一个算法,你可以一次画一个数字,确保你会选出一个胜利者(很可能有几个参与者仍然相信他们能在很大程度上成为胜利者),这是没有意义的。

你不能这么做。

当然,您可以给23位参与者一张票,2,3,4,5,5+n,其中n是参与者的编号。然后画数字1,2,3,4,5,然后画5+x,其中x介于1和参与者数之间。但我怀疑在第二周人们会不会觉得这很有趣。

票数 0
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/317678

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档