33,006
社区成员
发帖
与我相关
我的任务
分享
/// <summary>
/// 计算指定的宝石数下,最后镶在武器上的宝石数量的概率
/// </summary>
/// <param name="num">指定宝石数量</param>
/// <param name="p0">剩0颗宝石的概率</param>
/// <param name="p1">剩1颗宝石的概率</param>
/// <param name="p2">剩2颗宝石的概率</param>
private void exe_probability(int num, ref double p0, ref double p1, ref double p2)
{
p0 = (double)1;
p1 = 0;
p2 = 0;
for (int i = 0; i < num; i++)
{
exe_probability(ref p0, ref p1, ref p2);
}
return;
}
/// <summary>
/// 计算在指定概率下再镶一颗后的概率
/// </summary>
/// <param name="p0">剩0颗宝石的概率</param>
/// <param name="p1">剩1颗宝石的概率</param>
/// <param name="p2">剩2颗宝石的概率</param>
private void exe_probability(ref double p0, ref double p1, ref double p2)
{
double oldp0 = p0;
double oldp1 = p1;
double oldp2 = p2;
p0 = oldp0 * 0.5 + oldp1 * 0.1;
p1 = oldp0 * 0.5 + oldp1 * 0.5;
p2 = oldp2 + oldp1 * 0.4;
return;
}
我写了个算法,好像没问题吧,敬请指正