用C语言求彩票的中奖率解决方法

用C语言求彩票的中奖率
请哪位大侠解答一下。
已知集齐n张不同彩票就会中奖,现买了m(m>=n)张彩票,求中奖的概率。

------解决方案--------------------
#include <stdio.h>

double GetProbability(int m, int n)
{
if (m <= 0 || n <= 0 || m < n)
{
return 0;
}

int WinNumber = 0; // 中奖的情况
int TotalNumber = 0; // 总的可能情况
int i;

WinNumber = 1;
for (i = 1; i <= n; i++)
{
WinNumber *= i;
}

TotalNumber = 1;
for (i = 1; i <= m; i++)
{
TotalNumber *= n;
}

double val = (double)WinNumber / TotalNumber;

return val;
}

int main()
{
double f = GetProbability(5, 3);
printf("%f\n", f);

return 0;
}
------解决方案--------------------
你把所有的彩票号码都买了,也不一定会中奖
------解决方案--------------------
收集N张彩票?

如果需要收集的每一张,获取的概率相同为前提,那么
设总彩票发行量为X,
需要收集N张不同的(一共有N种不同类型的票),
每种类型的票各发行Y张
那么X=N*Y

1,
现在已经买了M张(M>N),即最后一张为第M张,倒数第二张为第(M-1)张,依次类推是倒数第三张是(M-2)张,(M-3)张,(M-4)张……直到[M-(M-1)]=1,第一张。
这样就把手里的每一张都标注好了
2,
设:买到手里没有的彩票为新票。那么,M张全部为新票就中奖了,因为全部不同。
还是倒着来数数。
最后一张为新票概率:100%
(M-1)为新票的概率:[(Y-1)*N]/(X-1)
(M-2)为新票的概率:[(Y-2)*N]/(X-2)
以此类推,然后得出每张票的概率再计算

其实写到这里我晕了,因为LZ提供的条件好少,应该是无解的。我这个思路是建立在只有你一个人买彩票的情况下,并且所有发行的票都在你面前可以选择,并且概率很简单,所有票均等。