.net 根据概率不同 显示不同的内容(向高手求救)

fffff_1982 2009-04-08 11:12:44
问题如下:
a 出现概率 %10
b 出现概率 %15
c 出现概率 %10
d 出现概率 30%
如何用一个算法,求出来。
就像砸金蛋似的,随机产生 a b c d 的一个!
如果用随机函数的话,a 和 c 不好区分,
如果用区间的话,但是我不知道怎么处理!

希望高手帮忙!!!
...全文
162 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
takako_mu 2009-04-08
  • 打赏
  • 举报
回复
只要判斷一下e是不是已經出現了,如果出現了就屏蔽掉它再次出現的可能。
Code詳見7樓
fffff_1982 2009-04-08
  • 打赏
  • 举报
回复
描述是这样的,就是有一个 e 一天出现的几率就只有一次,
就是只能出现一次,
这个要是用算法实现的话到底怎么实现???
takako_mu 2009-04-08
  • 打赏
  • 举报
回复

protected int Flag
{
get
{
if (ViewState["Flag"] != null)
{
return int.Parse(ViewState["Flag"].ToString());
}
else
{
ViewState["Lid"] = 0;
return 0;
}
}
set
{
ViewState["Flag"] = value;
}
}

protected void btn_ZaJinHua_Click(object sender, EventArgs e)
{
Random rd = new Random();
string Gailv = "a";
int i = 0;
if (Flag == 0)
{
i = rd.Next(1, 10000);
}
else
{
i = rd.Next(1, 66);
}

if (i < 11)
{
Gailv = "a";
}

else if (i > 10 && i < 21)
{
Gailv = "c";
}

else if (i > 20 && i < 35)
{
Gailv = "b";
}

else if (i > 36 && i < 66)
{
Gailv = "d";
}

else if (i > 65 && i < 10000)
{
Gailv = "e";
Flag = 1;
}
ShowMessage(Gailv);
}

protected void ShowMessage(string message)
{
Response.Write("<script>alert('" + message + "')</script>");
}
takako_mu 2009-04-08
  • 打赏
  • 举报
回复
机率太高了=?不明白....
e又是什么?....能連貫清楚的再表達一遍嗎?
fffff_1982 2009-04-08
  • 打赏
  • 举报
回复
这样是可以抽取来,呵呵,
但是这样的话,是不是机率太高了,

还有一种情况,就是有个 e 一天只能随机出现一次 这个能实现吗?



jdbcodbc 2009-04-08
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 takako_mu 的回复:]
你在1~65中間隨即取一個數字.Random.Next(1,66);
如果是1~10之間呢就為A,
11~20為C,
21~35為B,
36~65為D
[/Quote]
2楼这样就可以了
wanghui0380 2009-04-08
  • 打赏
  • 举报
回复
没啥不好分地

10+15+10+30=65

ok了,产生一个0-65之间的随机数就成,剩下的东西,我想你自己会想明白滴
takako_mu 2009-04-08
  • 打赏
  • 举报
回复
你在1~65中間隨即取一個數字.Random.Next(1,66);
如果是1~10之間呢就為A,
11~20為C,
21~35為B,
36~65為D
fffff_1982 2009-04-08
  • 打赏
  • 举报
回复
看了你的代码了,a-d 用65 内的随机数完全没有什么问题,
但是(a-d )和 e 的可能性是一样的,
都是随机出来的,只不过 e 是出来一次之后就不出来了,这个是要考虑的地方!
fffff_1982 2009-04-08
  • 打赏
  • 举报
回复
看了你的代码了,a-d 用65 内的随机数完全没有什么问题,
但是(a-d )和 e 的可能性是一样的,
都是随机出来的,
wuyq11 2009-04-08
  • 打赏
  • 举报
回复
产生不重复随机数
int a[100];
for(i=0; i<=99; ++i) a[i]=i;
for(i=99; i>=1; --i) swap(a[i], a[rand()%i]);
public class Test
{
public static void Main ()
{
int a = 1;
int b = 2;
swap (ref a, ref b);

}
public static void swap (ref int a, ref int b)

{
int temp = a;
a = b;
b = temp;
}

}

62,046

社区成员

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

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

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

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