45 lines
1.4 KiB
VB.net
45 lines
1.4 KiB
VB.net
Module Module1
|
|
Dim random As New Random()
|
|
|
|
Function RandN(n As Integer) As Boolean
|
|
Return random.Next(0, n) = 0
|
|
End Function
|
|
|
|
Function Unbiased(n As Integer) As Boolean
|
|
Dim flip1 As Boolean
|
|
Dim flip2 As Boolean
|
|
|
|
Do
|
|
flip1 = RandN(n)
|
|
flip2 = RandN(n)
|
|
Loop While flip1 = flip2
|
|
|
|
Return flip1
|
|
End Function
|
|
|
|
Sub Main()
|
|
For n = 3 To 6
|
|
Dim biasedZero = 0
|
|
Dim biasedOne = 0
|
|
Dim unbiasedZero = 0
|
|
Dim unbiasedOne = 0
|
|
For i = 1 To 100000
|
|
If RandN(n) Then
|
|
biasedOne += 1
|
|
Else
|
|
biasedZero += 1
|
|
End If
|
|
If Unbiased(n) Then
|
|
unbiasedOne += 1
|
|
Else
|
|
unbiasedZero += 1
|
|
End If
|
|
Next
|
|
|
|
Console.WriteLine("(N = {0}):".PadRight(17) + "# of 0" + vbTab + "# of 1" + vbTab + "% of 0" + vbTab + "% of 1", n)
|
|
Console.WriteLine("(Biased: {0}):".PadRight(15) + "{0}" + vbTab + "{1}" + vbTab + "{2}" + vbTab + "{3}", biasedZero, biasedOne, biasedZero / 1000, biasedOne / 1000)
|
|
Console.WriteLine("(UnBiased: {0}):".PadRight(15) + "{0}" + vbTab + "{1}" + vbTab + "{2}" + vbTab + "{3}", unbiasedZero, unbiasedOne, unbiasedZero / 1000, unbiasedOne / 1000)
|
|
Next
|
|
End Sub
|
|
|
|
End Module
|