喵宅苑 MewoGarden × 技术宅社区II | Z站 Z Station 棒棒哒纯文字二次元技术社区

正文

调查的艺术:把个人隐私变成可以说的秘密

作者:轻舟过

如果你在学生会工作,想要了解同学们在考试中舞弊行为的严重程度,你会怎么做呢?一个很简单的办法就是,和每一个同学单独进行谈话:“诚实地告诉我你作弊了吗,我保证不会告诉任何人”。不过,这个“保证”似乎太不给力,几乎不会有人敢诚实作答吧,谁知道这个秘密最终会传到哪儿去呢。有没有什么绝对没有漏洞的保密措施,让每一位同学都能放心地诚实回答问题呢?这次,威武的数学又派上用场了。
一种对敏感信息的调查方法
假定要在 100 位同学中做调查。事先当着所有同学的面制作 100 张小纸条,其中 40 张纸条上写“你作弊了吗”,剩下 60 张纸条上写“你没作弊吗”。然后,和每一位同学进行单独谈话,让他像抓阄那样随机抽取一张小纸条。这位同学将会根据纸条上的问题回答“是”或者“不是”,之后立即把小纸条销毁掉,不让其他任何人知道纸条上的内容。这样一来,每个同学都可以放心地回答“是”或者“不是”了,因为其他人根本不知道他答的是哪个问题。
你的工作就是记录有多少人回答“是”,有多少人回答“不是”,不必(也不可能)知道他们各自是针对哪个问题回答的。根据最后统计出来的 100 个回答结果,你就能推算出舞弊学生所占的大致比例了。
如何计算出舞弊学生的比例?
假定有 45 人回答“是”,剩下 55 个人回答“不是”,你如何算出舞弊学生所占的比例呢?不妨把这个比例记作 p,根据全概率公式,下面的等式成立:
45/100 = p × (40/100) + (1 - p) × (60/100)
这个公式上直观上可以这么理解:记“你作弊了吗”的问卷为问卷 A,“你没作弊吗”的问卷为问卷 B。那么一个人回答“是”的概率等于收到 A 卷的概率乘以作弊的概率,加上收到 B 卷的概率乘以没作弊的概率。一个人回答“是”的概率宏观上就表现为这 100 个人中回答“是”的人数,一个人作弊的概率宏观上也就表现为 100 个人中作弊的人数。
我们可以依据上面的式子,解出 p 的值来。当然,这样一次计算出来的 p 是不准确的,因为调查所得到的结果 45 并不一定是理论值。也就是说,固定一个 p,我们可以算出回答“是”的人数的理论值,那么多次调查中回答“是”的人数将在理论值附近波动。换个角度来说,我们可以通过多次调查,取 p 的平均值作为结果就比较准确了。
为什么要取 40 和 60 ?
考虑一个极端情况,我们把 (40, 60) 换为 (50, 50),你会发现,上述等式右边的 p 正好被消掉了,不管 p 是多少,回答“是”的人数的理论值总是 50。这是因为,此时一个人收到 A、B 卷是等可能的,所以他回答“是”或“不是”也是等可能的,所以整体上回答“是”的人数会接近一半。也就是说,我们无法通过实验来测得 p 的值,这是一套毫无意义的问卷。
事实上,A、B 卷的数量差越大,结果的误差就会越小。另一个极端情况就是有 100 个 A 卷 0 个 B 卷(或者 100 个 B 卷 0 个 A 卷),假设所有人仍然都说真话,测量结果的准确程度将会达到最大——它就等于实际结果了。
但同时,A、B 卷的数量相差太大,又会失去保密的作用,因为大家都会知道你手中的问题多半是哪一个。综合两方面的因素来看,(40, 60) 的确是一个不错的选择。
本文版权属于果壳网(guokr.com),转载请注明出处。商业使用请联系果壳
转自:http://www.guokr.com/article/5500/

回复

没用编辑器

作者:轻舟过
foodszhu 发表于 2013-4-18 19:03 没用编辑器。。。。只是命令行下的补完。。。汗。。只是有段时间很好奇shell中的补完是怎么写的。。。然后 ...
其实就是自己尝试一下嘛,挺好的。 我有时候也这样,随便写点代码,思考得也不深入
查看回复

当时没学过

作者:轻舟过
soya1412 发表于 2013-4-18 18:55 当时没学过。。所以老师说的时候听了好久都不知道为什么问无关问题会不影响最终值。。 ...
原来如此
查看回复

感觉自己还是没有把握住自己应该前进的方向

作者:foodszhu
感觉自己还是没有把握住自己应该前进的方向。。。看到一个东西感觉有意思就去做了。。但是老深入不了。。。有时候翻翻自己写过的代码都很好奇自己当初怎么想过搞这个。。。。
查看回复

本帖最后由

作者:foodszhu
[i=s] 本帖最后由 foodszhu 于 2013-4-18 19:08 编辑
轻舟过 发表于 2013-4-18 18:47 不知道你写的是哪个编辑器的代码补全? 数据库是在本地的还是远程的?
没用编辑器。。。。只是命令行下的补完。。。汗。。只是有段时间很好奇shell中的补完是怎么写的。。。然后搜了搜资料自己想写一个c的补完。。。一开始还想的很多。。。最后。。。就只是单纯实现了函数名和变量名的补完。。。拿python和trie树写的。。没有具体嵌入到编辑器中。。好羞愧。。。自己最后琢磨觉得很多东西其实不用那么麻烦啊。。。不过后来就又老老实实的抱着C啃了。。。
查看回复

话说高中有没有学过贝叶斯的

作者:soya1412
轻舟过 发表于 2013-4-18 18:48 话说高中有没有学过贝叶斯的,我忘记了
@84#当时没学过。。所以老师说的时候听了好久都不知道为什么问无关问题会不影响最终值。。
查看回复

这不是高中数学题啊

作者:轻舟过
soya1412 发表于 2013-4-18 18:45 这不是高中数学题啊。。敏感问题调查。。
话说高中有没有学过贝叶斯的,我忘记了
查看回复

但是因为总是要更新数据库调整概率

作者:轻舟过
foodszhu 发表于 2013-4-18 18:43 但是因为总是要更新数据库调整概率。。。速度过慢被pass了。。。
不知道你写的是哪个编辑器的代码补全? 数据库是在本地的还是远程的?
查看回复

这不是高中数学题啊

作者:soya1412
@31#这不是高中数学题啊。。敏感问题调查。。
查看回复
上一页
下一页
0%
站点地图友情链接:
喵宅苑
喵空间社区程序
喵宅苑 静态版
宅喵RPG地图编辑器
络合兔
Lanzainc
技术宅
小五四博客
莉可POI
Mithril.js
枫の主题社
Project1
午后少年
机智库
七濑胡桃
xiuno
幻想の日常
魂研社
Nothentai
0xffff
欲望之花
泽泽社长
淀粉月刊
HAYOU
红客联盟
异次元
轻之国度
神奇宝贝新生代
游戏狗
口袋双子星
我的世界论坛
梦次元
动漫东东
动漫国际
精艺论坛
78动漫
吐槽弹幕网
漫客栈