随机数生成,可控密度分布算法?

linchenrr 2016-04-13 11:32:55
一个随机数生成器(范围是 1-N),根据提供的参数P(0.0-1.0)决定每次产生的随机数尽量靠近P*N,从而实现可控分布密度。希望大神给一个思路,或者代码实现,谢谢!
...全文
261 3 打赏 收藏 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuzuning 2016-04-13
  • 打赏
  • 举报
回复
你这个和指定概率抽奖很相似
        static Random rand = new Random();
        static dynamic ProbabilityLottery(List<object> proArr)
        {
            var proSum = 0;
            foreach (dynamic x in proArr) proSum += x.Value;// Value 表示份额

            //var rand = new Random();
            foreach (dynamic v in proArr)
            {
                var randNum = rand.Next(1, proSum);
                if (randNum <= v.Value)
                {
                    return v;
                }
                else
                {
                    proSum -= v.Value;
                }
            }
            return new {};
        }
wanghui0380 2016-04-13
  • 打赏
  • 举报
回复
自己百度“高斯白噪声算法”
tanta 2016-04-13
  • 打赏
  • 举报
回复
如果需要定区间的话,比如说0-0.5占20%,0.5-1占80%,可以在每个区间单独调用,如上例子,在0-0.5调用random 10次,在0.5-1调用 40次,就可以实现分布。 如果需要实现函数类分布,如:y=sin(x)类分布,在取值区间random,然后用函数求值。

111,128

社区成员

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

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

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