C# 怎么实现按指定概率产生随机数?

ewaterlong 2009-04-16 11:34:35
比如产生数的范围是0-50,按60%(概率为K%)的概率产生0-20之间的数,按40%(概率为1-K%)的概率产生21-50之间的数?
...全文
1032 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
xukaifu 2009-04-16
  • 打赏
  • 举报
回复
先生成100个数
然后计算出>0 && <=60的数有多少 个
if(计算出的个数/100>0.6)
{
生成0~20的随机数
}
else
{
生成21~50的随机数
}
ewaterlong 2009-04-16
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 joeandlily 的回复:]
悄悄的问:这个命题能实现吗?
[/Quote]
按2楼的方法
Random myRandom = new Random();
int i= myRandom.Next(1, 100);
if (i <=60)
{
int j = myRandom.Next(0, 20);
txtStr.Text = j.ToString();
}
else
{
int j = myRandom.Next(21, 50);
txtStr.Text = j.ToString();
}
ewaterlong 2009-04-16
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 ltlzyy 的回复:]
先生成三个0-20的,再生成21-50的数两个,然后随机取一个出来
[/Quote]
这个随机取一个出来不太好实现吧
genius_tong 2009-04-16
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 coodd 的回复:]
先生成1-100的随机数,如果小于等于60,就在0-20间生成随机数,否则在21-50间生成随机数。
[/Quote]

顶~
joeandlily 2009-04-16
  • 打赏
  • 举报
回复
悄悄的问:这个命题能实现吗?
ltlzyy 2009-04-16
  • 打赏
  • 举报
回复
先生成三个0-20的,再生成21-50的数两个,然后随机取一个出来
minioreo 2009-04-16
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 coodd 的回复:]
先生成1-100的随机数,如果小于等于60,就在0-20间生成随机数,否则在21-50间生成随机数。
[/Quote]
对头
ewaterlong 2009-04-16
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 coodd 的回复:]
先生成1-100的随机数,如果小于等于60,就在0-20间生成随机数,否则在21-50间生成随机数。
[/Quote]
想法不错,值得参考!大家还有更好的解决方法不?
rtdb 2009-04-16
  • 打赏
  • 举报
回复
支持2楼。
coodd 2009-04-16
  • 打赏
  • 举报
回复
先生成1-100的随机数,如果小于等于60,就在0-20间生成随机数,否则在21-50间生成随机数。
jie3614 2009-04-16
  • 打赏
  • 举报
回复
这个算法有意思 关注一下
ltlzyy 2009-04-16
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 ewaterlong 的回复:]
引用 6 楼 ltlzyy 的回复:
先生成三个0-20的,再生成21-50的数两个,然后随机取一个出来

这个随机取一个出来不太好实现吧
[/Quote]

放在一个数组里就可以随机取到了,不过按效率来看,二楼的方法是最好的

110,545

社区成员

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

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

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