同德围南北高架:c语言程序设计——彩票问题
有人答出来追加50分
以下的 C 小程序将输出所有 28 个和值的出现的概率(输出贴在程序下面)。
可见概率最高 0.075,最低 0.001,所以已开出的 1000 期彩票中出现频率最高的和值是 13 和 14,
连续未出现期数最长的和值则是 0 和 27 (假设实际概率和理论概率吻合)。
#include<stdio.h>
/* 返回 number 中所有数字的和 */
unsigned sumOfAllDigits( unsigned number );
void main( ) {
/* 最低和值是 0,最高和值是 27,所以共有 28 个和值。*/
#define NUMBER_OF_SUM 28
unsigned chance[ NUMBER_OF_SUM ] = { 0 },
i;
for ( i = 0; i <= 999; i++ )
++chance[ sumOfAllDigits( i ) ];
puts( "和值\t出现的概率" );
puts( "一一\t一一一一一" );
for ( i = 0; i < NUMBER_OF_SUM; i++ )
printf( "%2u\t%.3f\n", i, chance[ i ] / 1000. );
}
unsigned sumOfAllDigits( unsigned number ) {
unsigned sum = 0;
for ( ; number; number /= 10 )
sum += number % 10;
return sum;
}
一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一
输出:
和值 出现的概率
一一 一一一一一
0 0.001
1 0.003
2 0.006
3 0.010
4 0.015
5 0.021
6 0.028
7 0.036
8 0.045
9 0.055
10 0.063
11 0.069
12 0.073
13 0.075
14 0.075
15 0.073
16 0.069
17 0.063
18 0.055
19 0.045
20 0.036
21 0.028
22 0.021
23 0.015
24 0.010
25 0.006
26 0.003
27 0.001
出现频率最高的和值为13,14都是75注,
连续未出现期数最长的和值是0和27