如何用JAVA或c对本福特定律进行数值验证?如果实在不好实现也可以推荐一些链接。
1条回答 默认 最新
关注 现在用java来编程:
在斐波那契数列中,验证本福特定律的正确性public class Test { public static void main(String[] args) { int n = 800;// 循环次数 int a[] = new int[1000]; int b[] = new int[1000]; int c[] = new int[10];// 计数器 int i, k; a[0] = 1;// a0表示代表a1...an有效,a0=3,a1,a2,a3 a[1] = 1;// a1代表第一位数字 b[0] = 1; b[1] = 1; c[1]++;// 头两位是1,1 c[1]++; k = 2; while (0 == 0) { a = add(a, b);// 相加 c[a[1]]++; // a1是返回数组的第一位数字 System.out.print(a[0] + "***"); for (i = 1; i <= a[0]; i++) System.out.print(a[i]); System.out.println(); k++; if (k == n) break; b = add(a, b); c[b[1]]++; System.out.print(a[0] + "***"); for (i = 1; i <= b[0]; i++) System.out.print(b[i]); System.out.println(); k++; if (k == n) break; }// System.out.println(); System.out.println(); for (i = 1; i <= 9; i++) System.out.println(i + "---" + c[i] / (n + 0.0) * 100); } // static int[] add(int[] a, int[] b) { // a0,a1,a2,a3,a4,a5 // b0 b1,b2,b3 int c[] = new int[1000]; int la = a[0], lb = b[0]; int i = 0, lc = 0; lc = (la > lb) ? la : lb;// lc最大 c[0] = lc; if (la > lb) { for (i = 1; i <= lc - lb; i++) c[i] = a[i];// 12345,45, 123要a的,后面45+45 for (i = lc - lb + 1; i <= lc; i++) c[i] = a[i] + b[i + lb - lc]; } if (la == lb) { for (i = 1; i <= lc; i++) c[i] = a[i] + b[i]; } if (la < lb) { for (i = 1; i <= lc - la; i++) c[i] = b[i];// ## for (i = lc - la + 1; i <= lc; i++) c[i] = a[i + la - lc] + b[i]; } for (i = lc; i >= 2; i--) { c[i - 1] = c[i - 1] + c[i] / 10; c[i] = c[i] % 10; }// for if (c[1] >= 10) {// 不要少写=!!! for (i = lc + 1; i >= 2; i--) c[i] = c[i - 1];// 1-->2,c1==c2 c[1] = c[1] / 10;// 只要前面 c[2] = c[2] % 10;// 只要末尾 c[0] = lc + 1; } return c; }// add }// class
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥15 孟德尔随机化结果不一致
- ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
- ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
- ¥15 谁有desed数据集呀
- ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100
- ¥15 关于#hadoop#的问题
- ¥15 (标签-Python|关键词-socket)
- ¥15 keil里为什么main.c定义的函数在it.c调用不了
- ¥50 切换TabTip键盘的输入法
- ¥15 可否在不同线程中调用封装数据库操作的类