asp.net中有 stdev 的功能吗? 我尝试使用数学。功能,但找不到它有用。
你能推荐我吗?之前的
答案 0 :(得分:1)
您可以使用以下功能查找标准差,
C#
private double CalculateStdDev(IEnumerable<double> values)
{
double ret = 0;
if (values.Count() > 0)
{
//Compute the Average
double avg = values.Average();
//Perform the Sum of (value-avg)_2_2
double sum = values.Sum(d => Math.Pow(d - avg, 2));
//Put it all together
ret = Math.Sqrt((sum) / (values.Count()-1));
}
return ret;
}
VB
Private Function CalculateStdDev(ByVal values As IEnumerable(Of Double)) As Double
Dim ret As Double = 0
If values.Count() > 0 Then
Dim avg As Double = values.Average()
Dim sum As Double = values.Sum(Function(d) Math.Pow(d - avg, 2))
ret = Math.Sqrt((sum) / (values.Count() - 1))
End If
Return ret
End Function
答案 1 :(得分:0)
您可以使用免费和开源的第三方库。我使用了SmartStats
,您可以从SmartStats download下载。
bin
目录中
项目,或在您的Vb.Net Web应用程序中添加对它的引用。然后,您只需使用以下代码来确定标准偏差。 someNumbers
是下面代码中的双精度值数组。
Dim disperse As SmartStats.dispersion = New SmartStats.dispersion()
Dim stdDev As Double = disperse.StdDev(someNumbers)
您可以使用此库来确定许多其他统计函数,以备将来需要时使用。有关此库可用的其他统计函数的更多详细信息,请参见以下网址Statistical functions with SmartStats library
使用aspx页面的代码隐藏,使用此库计算标准差的完整工作示例如下所示。
Partial Class _Default
Inherits Page
Private Sub _Default_Load(sender As Object, e As EventArgs) Handles Me.Load
'create a collection of double numbers
Dim someNumbers As List(Of Double) = New List(Of Double)()
someNumbers.Add(2)
someNumbers.Add(10)
someNumbers.Add(6)
someNumbers.Add(11)
someNumbers.Add(14)
someNumbers.Add(21)
someNumbers.Add(1)
someNumbers.Add(100)
someNumbers.Add(65)
'only below two lines are needed to determine standard deviation
Dim disperse As SmartStats.dispersion = New SmartStats.dispersion()
Dim stdDev As Double = disperse.StdDev(someNumbers.ToArray())
End Sub
End Class