Number of n Dice (Recursive) code (C)
This address: Http://blog.csdn.net/caroline_wendy
Title: N Dice still on the ground, all the dice to the upper side of the sum of points for S. Enter N to print out the probability that all possible values of s will appear.
The recursive method can be used if there is only one dice, and then the number of dice increment Add.
Code:
/* * main.cpp * * Created on:2014.7.12 * author:spike * * #include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h>using namespace std;const int g_maxvalue = 6;void probability (int original, int cu rrent, int sum, int* pprobabilities) {if (current = = 1) {pprobabilities[sum-original]++;} else {for (int i=1; I<=G_MAXVA Lue ++i) {probability (original, current-1, I+sum, pprobabilities);}}} void probability (int number, int* pprobabilities) {for (int i=1; i<=g_maxvalue; ++i) probability (number, number, I, Ppro babilities);} void printprobability (int number) {if (number < 1) return;int maxsum = number*g_maxvalue;int* pprobabilities = new int[ maxsum-number+1];for (int i=number; i<=maxsum; ++i) Pprobabilities[i-number] = 0; Probability (number, pprobabilities), int total = POW (double) G_maxvalue, number), for (int i=number; i<= maxsum; ++i) {D Ouble ratio = (double) Pprobabilities[i-number]/total;printf ("%d:%e\n", I, ratio);} Delete[] Pprobabilities;} int main (void) {printprobability (2); return 0;}
Output:
2:2.777778E-0023:5.555556E-0024:8.333333E-0025:1.111111E-0016:1.388889E-0017:1.666667E-0018:1.388889E-0019: 1.111111e-00110:8.333333e-00211:5.555556e-00212:2.777778e-002
Programming algorithm-Number of points (recursion) code for n Dice (C)