C#100号抽奖概率问题

qq_33914814 2016-05-05 07:23:18
客人随机选择一个号(1-100),系统再随机生成一个号(1-100)做为开奖号码;后台可以设置0-100%的概率中奖,请问这个算法怎么做?谢谢各位大神!
...全文
237 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
by_封爱 版主 2016-05-06
  • 打赏
  • 举报
回复

var 中奖概率=10;
var 客户选的号码=34;
var 是否中奖= Enumerable.Range(1, 100).OrderBy(n => Guid.NewGuid()).Take(中奖概率).Contains(客户选的号码);
qq_33914814 2016-05-05
  • 打赏
  • 举报
回复
引用 3 楼 CaRrot_Love 的回复:
[quote=引用 1 楼 CaRrot_Love 的回复:] 首先对算法速度不懂

private bool IsCheck()
{
   Random ran = new Random();
                int clientNumber = ran.Next(1,100);
                int chkCount = 5;//获取中奖概率
                int unChkCount = 100-chkCount;
                ArrayList numbers = new ArrayList();
                int unChkNumber = clientNumber + 1;//非中奖数字,可随机给一个不同值
                for (int i = 0; i < 100; i++)
                {
                  if (i <chkCount)
                    {
                        numbers.Add(clientNumber);
                    }
                    else
                    {
                        numbers.Add(unChkNumber);
                    }
                }
                if (Convert.ToInt32(numbers[ran.Next(1, 100)]) == clientNumber)
                {
                    return true;
                }
                else
                {
                    return false;
                }
}
坐等大牛更优的方式
for循环中 if条件判断应为 < 没有等号 写错了[/quote] 谢谢你的思路,感谢!
CaRrot_Love 2016-05-05
  • 打赏
  • 举报
回复
引用 1 楼 CaRrot_Love 的回复:
首先对算法速度不懂

private bool IsCheck()
{
   Random ran = new Random();
                int clientNumber = ran.Next(1,100);
                int chkCount = 5;//获取中奖概率
                int unChkCount = 100-chkCount;
                ArrayList numbers = new ArrayList();
                int unChkNumber = clientNumber + 1;//非中奖数字,可随机给一个不同值
                for (int i = 0; i < 100; i++)
                {
                  if (i <chkCount)
                    {
                        numbers.Add(clientNumber);
                    }
                    else
                    {
                        numbers.Add(unChkNumber);
                    }
                }
                if (Convert.ToInt32(numbers[ran.Next(1, 100)]) == clientNumber)
                {
                    return true;
                }
                else
                {
                    return false;
                }
}
坐等大牛更优的方式
for循环中 if条件判断应为 < 没有等号 写错了
CaRrot_Love 2016-05-05
  • 打赏
  • 举报
回复
首先对算法速度不懂

private bool IsCheck()
{
   Random ran = new Random();
                int clientNumber = ran.Next(1,100);
                int chkCount = 5;//获取中奖概率
                int unChkCount = 100-chkCount;
                ArrayList numbers = new ArrayList();
                int unChkNumber = clientNumber + 1;//非中奖数字,可随机给一个不同值
                for (int i = 0; i < 100; i++)
                {
                    if (i <= chkCount)
                    {
                        numbers.Add(clientNumber);
                    }
                    else
                    {
                        numbers.Add(unChkNumber);
                    }
                }
                if (Convert.ToInt32(numbers[ran.Next(1, 100)]) == clientNumber)
                {
                    return true;
                }
                else
                {
                    return false;
                }
}
坐等大牛更优的方式

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧