关于抽奖概率的编程实现思路问题

天下如山 2011-08-09 09:46:17
想实现一个关于抽奖的效果

如下:

A奖品被抽到的概率为20%;
B奖品被抽到的概率为10%;
C奖品被抽到的概率为5% 。。。。。。


请问 应该如何实现这样的编程思想呢?

谢谢 在线等
...全文
628 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
yyl8781697 2011-08-10
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 caozhy 的回复:]

C# code
int x = new Ramdom.Next(0, 20);
if (x < 4) 中A奖;
if (x < 2) 中B奖;
if (x < 1) 中C奖;
[/Quote]
+1
zhanglong_longlong 2011-08-10
  • 打赏
  • 举报
回复
C# codeint x = new Ramdom.Next(0, 20);
if (x < 4) 中A奖;
if (x < 2) 中B奖;
if (x < 1) 中C奖;
x363961461 2011-08-10
  • 打赏
  • 举报
回复
中奖,本人每次瓜分30%几率,选中的有70几率。 改改用吧



static Random Rnd = new Random();

private static 淘宝客 抽奖(List<淘宝客> 转盘) {
return (from x in Enumerable.Range(0, 1000000) //最多支100万次骰子
let 随机选择一个奖品 = 转盘[Rnd.Next(转盘.Count())]
let 支骰子 = Rnd.Next(0, 100)
where 支骰子 < 随机选择一个奖品.概率百分比
select 随机选择一个奖品).First();
}

class 淘宝客 {
public string 名称;
public int 概率百分比;
}







//拿选中的用户和我进行转盘程序
var 转盘 = new List<淘宝客>
{
new 淘宝客{ 名称="周xx", 概率百分比=30},
new 淘宝客{ 名称=checkedValue.Value, 概率百分比=70}

};

Enumerable.Range(1, 1).ToList().ForEach(x =>
{
if (抽奖(转盘).名称 == "周xx") {

txtUrl.Text += "&ref=&ali_trackid=2:mm_14090931_0_0:132849748_17_1572467691";
}
else {
txtUrl.Text += "&ref=&ali_trackid=2:" + checkedInner.Value + " ";

}

});







  • 打赏
  • 举报
回复
哈哈,随机数(0,9),判断下随机的是几,然后中的几等奖,欧了!
MSDNXGH 2011-08-10
  • 打赏
  • 举报
回复
不过,三个商品混在一起,如果,是1,那种什么好啊?,并且,中奖低啊。
分开的话

x=1,是A商品,x=2或x=3是B商品,x=4或x=5 x=6或x=7 是C商品

这样,中奖机率为7/20
MSDNXGH 2011-08-10
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 caozhy 的回复:]
引用 6 楼 danjiewu 的回复:
引用 4 楼 caozhy 的回复:

C# code
int x = new Ramdom.Next(0, 20);
if (x < 4) 中A奖;
if (x < 2) 中B奖;
if (x < 1) 中C奖;


坑人啊,这样只会中A奖了。

不是把这三条写在一起。

lz没有说清楚,是否是复合得奖,也就是得了A就不能得B……
[/Quote]
+1
threenewbee 2011-08-10
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 danjiewu 的回复:]
引用 4 楼 caozhy 的回复:

C# code
int x = new Ramdom.Next(0, 20);
if (x < 4) 中A奖;
if (x < 2) 中B奖;
if (x < 1) 中C奖;


坑人啊,这样只会中A奖了。
[/Quote]
不是把这三条写在一起。

lz没有说清楚,是否是复合得奖,也就是得了A就不能得B。
danjiewu 2011-08-10
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 caozhy 的回复:]

C# code
int x = new Ramdom.Next(0, 20);
if (x < 4) 中A奖;
if (x < 2) 中B奖;
if (x < 1) 中C奖;
[/Quote]

坑人啊,这样只会中A奖了。
子夜__ 2011-08-10
  • 打赏
  • 举报
回复
同意4楼 Ramdom
threenewbee 2011-08-09
  • 打赏
  • 举报
回复
int x = new Ramdom.Next(0, 20);
if (x < 4) 中A奖;
if (x < 2) 中B奖;
if (x < 1) 中C奖;
OnlyVB 2011-08-09
  • 打赏
  • 举报
回复
if x<2 then
显示C
elseif x<2^2 then
显示B
elseif x<2^3 then
显示A
elseif x<2^4 then
显示……
end if
OnlyVB 2011-08-09
  • 打赏
  • 举报
回复
首先生成一个随机数
select case x
case 1
显示C
case 2,3
显示B
case 4,5,6,7
显示A
end select
OnlyVB 2011-08-09
  • 打赏
  • 举报
回复
随机数呗,类似1代表C,2,3代表B,4,5,6,7代表A,……

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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