网站程序设计软件,阿里国际站韩语网站怎么做,wordpress歌曲,杭州公司1 随机数的问题
用 C# Random 类生成的随机数是平均分布的。也就是各数据段的出现的次数差不多。彩票号码属于这种随机数。
而很多很多常见的随机数#xff0c;比如#xff1a;成绩#xff0c;却是符合正态分布的。
因而很多时候需要生成符合正态分布规律的随机数。 2 文…
1 随机数的问题
用 C# Random 类生成的随机数是平均分布的。也就是各数据段的出现的次数差不多。彩票号码属于这种随机数。
而很多很多常见的随机数比如成绩却是符合正态分布的。
因而很多时候需要生成符合正态分布规律的随机数。 2 文本格式的程序 // 定义一个全局性公共的随机数发生器便于大家各函数后面共同使用。 Random global_rnd new Random();
/// summary /// Box-Muller算法 /// 随机产生一个符合正态分布的数 u均数d为标准方差 /// 注本算法来自于网络原文 d 为方差错误 /// /summary /// param nameu/param /// param named/param /// returns/returns public double Rand(double u, double d) { double u1, u2, z, x; if (d 0) { return u; } u1 global_rnd.NextDouble(); u2 global_rnd.NextDouble(); z Math.Sqrt(-2 * Math.Log(u1)) * Math.Sin(2 * Math.PI * u2); x u d * z; return x; }
/// summary /// 《小白学程序》第十六课随机数Random第三正态分布的随机数的计算方法与代码 /// 一般的随机数是平均分布的不符合常见的随机数分布比如成绩。 /// 因而很多时候需要生成符合正态分布规律的随机数 /// /summary /// param namesender/param /// param namee/param private void button16_Click(object sender, EventArgs e) { // 生成随机数并统计代码与前一课差不多 int n 360; int[] freq new int[n]; for (int i 0; i 10000; i) { // 调用 Rand() 生成符合正态分布的随机数 int a (int)(Rand(0.5, 0.1) * n); if (a 0) continue; if (a n) continue; freq[a] 1; } // 显示统计结果 与 前面一节课 的类似 // 方柱 的高度就是数字出现的次数频率 StringBuilder sb new StringBuilder(); sb.AppendLine(styletd { padding:0px;text-align:center;text-size:0px; } /style); sb.AppendLine(table width420 border0 styleborder-collapse:collapse;); sb.AppendLine(tr); for (int i 0; i n; i) { sb.Append(td stylevertical-align:bottom;); sb.Append(div stylewidth:3px;height: freq[i] px;border:solid 1px #FF0000;background-color:rgb(255,255,0);/div); sb.AppendLine(/td); } sb.AppendLine(/tr); sb.AppendLine(/table); webBrowser1.DocumentText sb.ToString(); } 3 代码格式 // 定义一个全局性公共的随机数发生器便于大家各函数后面共同使用。
Random global_rnd new Random();/// summary
/// Box-Muller算法
/// 随机产生一个符合正态分布的数 u均数d为标准方差
/// 注本算法来自于网络原文 d 为方差错误
/// /summary
/// param nameu/param
/// param named/param
/// returns/returns
public double Rand(double u, double d)
{double u1, u2, z, x;if (d 0){return u;}u1 global_rnd.NextDouble();u2 global_rnd.NextDouble();z Math.Sqrt(-2 * Math.Log(u1)) * Math.Sin(2 * Math.PI * u2);x u d * z;return x;
}/// summary
/// 《小白学程序》第十六课随机数Random第三正态分布的随机数的计算方法与代码
/// 一般的随机数是平均分布的不符合常见的随机数分布比如成绩。
/// 因而很多时候需要生成符合正态分布规律的随机数
/// /summary
/// param namesender/param
/// param namee/param
private void button16_Click(object sender, EventArgs e)
{// 生成随机数并统计代码与前一课差不多int n 360;int[] freq new int[n];for (int i 0; i 10000; i){// 调用 Rand() 生成符合正态分布的随机数int a (int)(Rand(0.5, 0.1) * n);if (a 0) continue;if (a n) continue;freq[a] 1;}// 显示统计结果 与 前面一节课 的类似// 方柱 的高度就是数字出现的次数频率StringBuilder sb new StringBuilder();sb.AppendLine(styletd { padding:0px;text-align:center;text-size:0px; } /style);sb.AppendLine(table width420 border0 styleborder-collapse:collapse;);sb.AppendLine(tr);for (int i 0; i n; i){sb.Append(td stylevertical-align:bottom;);sb.Append(div stylewidth:3px;height: freq[i] px;border:solid 1px #FF0000;background-color:rgb(255,255,0);/div);sb.AppendLine(/td);}sb.AppendLine(/tr);sb.AppendLine(/table);webBrowser1.DocumentText sb.ToString();
}4 运行结果正态分布