public double New21Game(int N, int K, int W) { FixedTest.TestNew21Game(N, K, W); if (K < 1) { return(1); } if (N < 1) { return(0); } double[] rates = new double[K + 1]; double singleRate = 1d / W; for (int i = 1; i <= K; i++) { if (i == 1) { rates[i] = Math.Min(N - K + 1, W) * singleRate; } else { var temp = 0d; //待计算 int j = 1; for (; j < Math.Min(i, W + 1); j++) { temp += rates[i - j]; } rates[i] += temp * singleRate; if (j == W + 1) { continue; } //安全区 int newN = N - K + i; if (newN > W) { rates[i] += (W - j + 1) * singleRate; } else { rates[i] += (newN - j + 1) * singleRate; } } Console.WriteLine($"{i} : {rates[i]}"); } return(rates[K]); }
private static AllTestRecord CreateExpectedTestData() { var fixedTestData = new FixedTest(); fixedTestData.Value[0] = 5; return(new AllTestRecord { arrayTest = new List <long> { 1, 2, 3, 4 }, booleanTest = true, bytesTest = new byte[] { 1, 2, 3, 4 }, doubleTest = 5.0, enumTest = AllEnum.BAR, fixedTest = fixedTestData, floatTest = 99.0f, intTest = 3, longTest = 4, stringTest = "required", mapTest = new Dictionary <string, long> { { "foo", 1 }, { "bar", 2 } }, nestedTest = new AllTestRecord { booleanTest = true, bytesTest = new byte[] { 1 }, stringTest = "required", fixedTest = fixedTestData, arrayTest = new List <long> { 1, 2, 3, 4 }, mapTest = new Dictionary <string, long> { { "foo", 1 }, { "bar", 2 } }, } }); }
public override AllTestRecord echoParameters(bool booleanTest, int intTest, long longTest, float floatTest, double doubleTest, byte[] bytesTest, string stringTest, AllEnum enumTest, FixedTest fixedTest, IList <long> arrayTest, IDictionary <string, long> mapTest, AllTestRecord nestedTest) { return(new AllTestRecord { stringTest = stringTest, booleanTest = booleanTest, intTest = intTest, arrayTest = arrayTest, bytesTest = bytesTest, doubleTest = doubleTest, enumTest = enumTest, fixedTest = fixedTest, floatTest = floatTest, longTest = longTest, mapTest = mapTest, nestedTest = nestedTest }); }