樂透下期號碼預測(2)
今天繼續往下面想以後,發現我以前的想法錯誤了.
本想說,根據歷史資料去統計,以出現次數較少的數字取亂數,又,理論上每個數字出現的次數會趨近一致,所以應該會有較高的機率得到下期中獎的號碼.
回頭想想每期中獎號碼組合機率,應該是以 1 去除以 42 取 6 的所有組合數.
我以排列組合去Google找了很多資料:
要怎麼求組合數呢??我們將樂透的規則套入組合公式:
從 42 個數字中,取 6 個號碼,不論順序,組成一組,不同的組合數為: 排列數/42!
排列組的計算: 42 * (42-1) * (42-2) * (42-3) * (42-4) * (42-5)
42!: 42*41*40*....*2*1
所以寫好以後的程式就是這樣:
using System;
using System.Collections;
public class MyClass
{
public static double calcP( double totalNumbers, double pickNumbers )
{
double possible = 1.0;
for( int i=0; i<pickNumbers; i++ )
possible = possible * (totalNumbers-i);
return possible;
}
public static double calcC( double totalNumbers, double pickNumbers )
{
double mShock = 1.0; // m!
for( long i=0; i<pickNumbers; i++ )
mShock = mShock * (i+1);
double p = calcP( totalNumbers, pickNumbers );
return( p/mShock );
}
public static void Main()
{
Console.WriteLine( "組合數是: {0}", calcC( 42.0, 6.0 ) );
RL();
}
#region Helper methods
private static void RL()
{
Console.ReadLine();
}
#endregion
}
最後算出來的結果是: 5,245,786
也就是說,如果有 5,245,786 人去買的話,至少會有一人中獎.
不過,還是覺得怪怪的...這數字會不會太小了呢??
沒有留言:
張貼留言