Benford's Law--本福特定律

本福特定律揭示了真实世界数据中数字出现的惊人规律,它指出以1开头的数字出现频率远高于其他数字。这一原理被广泛应用于会计审计、选举监督等领域,成为识别虚假数据的强大工具。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

假帐克星-- Benford's Law

假设走在大街上,随机选择一些人,让他们每人随便写下一个数字,得到的数字的分布将很有可能不是均匀的分布。这很容易理解,比如,中国人就比较避讳 数字4,而倾向于数字6或8等。

如果一个公司做假账,自作聪明的伪造者试图在账目中间“隐藏”数据,绝大多数情况下他们都很难高明到不露马脚。2001年,“9.11”事件发生后 不久,曾是美国最大的能源交易商、年营业收入达近千亿美元、股票市值最高可达700多亿美元、全球500强中排名第七的安然公司在事先没有任何征兆的情况 下突然宣布破产。不久就传出了该公司高层管理人员涉嫌做假账的丑闻,一时间,会计造假成了中外关注的焦点。

研究人员从安然公司所公布的一些数据进行统计分析,果然发现了一些征兆。例如,安然公司在2001年度到2002年度所公布的每股盈利数字的分布就 有问题,这些数字的使用频率与一个著名的定律--Benford's law(本福特定律)有较大的偏差,说明这些盈利数据一定是经过篡改后的。

Benford2

图:本福特定律、真 实税收数据、伪造数据、随机数据的数字分布

来源 ( http://www.flatrock.org.nz/topics/intellect_and_entertain/following_benfords_law.htm

Benford's law本福特定律,是关于某些类型数据的开头数字的分布规律的,该定律与你的直觉可能有些偏离:大多数人会认为,世界上千千万万的数据(非0开头)的开头 数字是1到9的任何一个数字,而且每个数字开头的概率应该差不多。现在,请你随便找本书,统计一下上面的各种开头数据的开头数字,看看是否符合设想。如果 你统计的数据足够多,你就会惊讶的发现,并非每个数字出现的概率均等,实际中以1为开头的数字出现的频率并不是人们想当然认为的1/9,而是0.301, 这说明30%的数字都以1开头。而2为首的数字出现的频率是0.176,3开头的数字出现的频率为0.125,往后出现频率依此减少,9打头的数字出现的 频率最低,只有0.046。

除了在会计账目数字上,定律的发现者,美国的物理学家Benford,发现各种完全不同的数据,比如人口,死亡率,物理和化学常数,棒球统计表,半 衰期放射性同位素,对数表,物理书中的答案,素数数字中均有这个定律的身影。本福特定律在我们的日常生活中很常见。对于财务数据,有趣的是,数学家们还发 现,在那些假账中,数字5和6居然是最常见的打头数字,而不是符合定律的数字1。如果审核账本的审计人员掌握了“本福特定律”,伪造者们要通过审计就会相 当的困难。Benford定律因此也被誉为“假账克星”。

该定理甚至还可以用于发现选举投票中的欺诈行为。选举投票的票数数据也符合这个定律,如果有人修改票数量,就会漏出蛛丝马迹来。研究人员依据这一定 律发现了2004年美国总统选举中佛罗里达州的投票欺诈行为,2004年委内瑞拉的投票欺诈和2006年墨西哥投票欺诈。近期的伊朗的大选可谓轰轰隆隆, 颇引人注目,内贾德在胜出之后却引来一片质疑,有科学家就尝试用Benford定律去发现是否存在投票欺诈行为(链接 )。

=====

本题要求你验证Benford定律,对给定的一段文本,分别算出其中以每个数字1-9打头的数据的比例并输出。

 

输入:

数据文件(filesize.txt , 某文件存储设备上各种文件的尺寸),里面包含很多整数数据,每个数据占一行。

输出:

数字1-9打头的数据所占的比例。为了便于自动检查结果。请使用格式化输出,格式化字符串为

 

"%d: %6.1f%%\n"

 

其中第一个参数为数字1-9,第二个参数为对应的百分比。

 

 

 

 

程序很简单,不写注释...

 

import java.io.*;

public class TurnCoin {

	public static void print(int[] str,int num){
		for(int i=0;i<str.length;i++){
			int t = str[i]/num;
			System.out.println(t);
			
		}
	}
	public static void main(String[] args) throws IOException{
		BufferedReader br = new BufferedReader(new FileReader("src/filesize.txt"));
		String s = br.readLine();
		int num = 0;
		int[] baifenbi = new int[9];
        while((s=br.readLine())!=null){
        	num ++;
        	switch (s.charAt(0)) {
				case '1':
					baifenbi[0] ++;
					break;
				case '2':
					baifenbi[1] ++;
					break;
				case '3':
					baifenbi[2] ++;
					break;
				case '4':
					baifenbi[3] ++;
					break;
				case '5':
					baifenbi[4] ++;
					break;
				case '6':
					baifenbi[5] ++;
					break;
				case '7':
					baifenbi[6] ++;
					break;
				case '8':
					baifenbi[7] ++;
					break;
				case '9':
					baifenbi[8] ++;
					break;
				default:
					break;
			}
        }
        print(baifenbi,num);
	}

}

 

智能网联汽车的安全员高级考试涉及多个方面的专业知识,包括但不限于自动驾驶技术原理、车辆传感器融合、网络安全防护以及法律法规等内容。以下是针对该主题的一些核心知识解析: ### 关于智能网联车安全员高级考试的核心内容 #### 1. 自动驾驶分级标准 国际自动机工程师学会(SAE International)定义了六个级别的自动驾驶等级,从L0到L5[^1]。其中,L3及以上级别需要安全员具备更高的应急处理能力。 #### 2. 车辆感知系统的组成与功能 智能网联车通常配备多种传感器,如激光雷达、毫米波雷达、摄像头和超声波传感器等。这些设备协同工作以实现环境感知、障碍物检测等功能[^2]。 #### 3. 数据通信与网络安全 智能网联车依赖V2X(Vehicle-to-Everything)技术进行数据交换,在此过程中需防范潜在的网络攻击风险,例如中间人攻击或恶意软件入侵[^3]。 #### 4. 法律法规要求 不同国家和地区对于无人驾驶测试及运营有着严格的规定,考生应熟悉当地交通法典中有关自动化驾驶部分的具体条款[^4]。 ```python # 示例代码:模拟简单决策逻辑 def decide_action(sensor_data): if sensor_data['obstacle'] and not sensor_data['emergency']: return 'slow_down' elif sensor_data['pedestrian_crossing']: return 'stop_and_yield' else: return 'continue_driving' example_input = {'obstacle': True, 'emergency': False, 'pedestrian_crossing': False} action = decide_action(example_input) print(f"Action to take: {action}") ``` 需要注意的是,“同学”作为特定平台上的学习资源名称,并不提供官方认证的标准答案集;建议通过正规渠道获取教材并参加培训课程来准备此类资格认证考试
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值