大致意思是大家把自己的手机号码的末4位留下,看看有没有谁比较有缘……(就是末4位相同)
单独来说,4位数字,自己持有一个,再抽取一个,相同的概率是1/10000,乍一看,概率是挺小的
有人同学在报上自己的末4位号码时感慨“概率真的是太小了”
……大概是文科的同学吧…
针对这个问题我编制了一个C++程序……代码在下:
#include "iostream.h"
#include "iomanip.h"
void main()
{
double k=1;
int i=1,n;
cout<<"手机号码末4位相同的概率有多大?"<<endl;
cout<<"多少个手机号码?\t";
cin>>n;
while(i<=n-1)
{
k=(10000-i)*k/10000;
i++;
}
cout<<"经过计算,至少有两个手机末4位数相同的概率为"<<setprecision(25)<<1-k<<endl;
}
当参与人数达到50的时候,计算显示至少有两个相同的概率是11.5%
参与100,概率39.1%
参与150,67.4%,2/3概率
参与200,86.5%,已经蛮高了
如果还是以“一万个回帖才能出一对”的观点来看,确实很惊人,所以不明白的看贴者就会觉得很神奇,很“有缘”
BTW:做了一些假设,比如说手机号码是不可挑选的,均匀的……但是实际情况好像不是这样
看到不少8888,可能是高价号……但是我同学笑我,说我死心眼,可能是随便打的…这我就不知道了。
| 更多同济资讯请访问同济大学论坛 | 直接去论坛查看 举报不良信息 广告投放联系 |
最新回复
大眼小石头 (2008-3-07 00:42:46)
search255 (2008-3-07 07:20:46)
QUOTE:
#include "iostream.h"#include "iomanip.h"
void main()
{
double k=1;
int i=1,n;
cout<<"本程序用于计算如下环境:一年设365天,个人于每天出生概率相同,现在班级中有n名同年出生同学,求其中至少两位同学生日一致的概率。"<<endl;
cout<<"班上有多少学生?\t";
cin>>n;
while(i<=n-1)
{
k=(365-i)*k/365;
i++;
}
cout<<"经过计算,至少有两位同学生日相同的概率为"<<setprecision(25)<<1-k<<endl;
}
哈
search255 (2008-3-08 15:04:24)
原来到处都有这样的帖子……
namelessone (2008-3-10 07:40:20)
namelessone (2008-3-10 07:41:26)
namelessone (2008-3-10 07:41:57)
mrbig727 (2008-3-28 13:12:29)
scythe (2008-4-03 13:31:58)
那个原理,就是当你只有一个固定号码要去找一万个号码中的重号的话,确实只有万分之一的机会
但是由于参与的人数不是一,而是远大于一的数字,每一对都有万分之一的机会获得重合的效果,那么就变成了参加人数之间两两组合的总数乘以重合几率了
再看看50人的情况,C(50,2)=50x49/2!=1225,再乘以万分之一,得12.5%
......
为什么有差别?
[ 本帖最后由 scythe 于 2008-4-3 14:01 编辑 ]
夏右 (2008-4-05 13:09:36)
search255 (2008-4-05 20:26:17)
QUOTE:
我觉得蛮好看懂的就是来了一个人,挑了一个号码,就把一万张椅子坐掉了一张
然后来第二个人,他挑一个座位,不与第一个重的概率是1- 9999/10000
来第三人,他挑一个座位,不与第一个与第二个重的概率是1 - (9999x9998/10000x10000)
……
请注意我的表述,“xx人里头至少有一对相同的概率”
scythe (2008-4-16 08:56:59)
其次,我也知道你那个没问题,不过我的问题是,我那个为什么会错,了解一种做法,不知道其他得出不同答案的结论错在哪里的话,其实也无法证明自己的那个是绝对正确的,对吧
search255 (2008-4-16 12:14:12)
新撰猎手 (2008-4-16 14:44:55)
Jockey (2008-4-16 23:37:38)
其实这种无聊的小程序平时用Scheme来玩玩更适合...
CODE:
;; calc-dup-p: number[>0] number[>0] -> number[ 本帖最后由 Jockey 于 2008-4-18 14:30 编辑 ];; Calculate the probability of finding at least one pair of duplicates
;; in sn samples extracted from space which has ss elements.
(define (calc-dup-p sn ss)
;; sub1: number -> number
(define (sub1 n)
(- n 1))
;; calc-no-dup-p-iter: number[>=0] number[>=0] number -> number
(define (calc-no-dup-p-iter sn-iter ss-iter result)
(if (= sn-iter 0)
result
(calc-no-dup-p-iter (sub1 sn-iter) (sub1 ss-iter)
(* result (/ ss-iter ss)))))
(- 1 (calc-no-dup-p-iter (sub1 sn) (sub1 ss) 1)))
五里雾 (2008-6-04 14:36:45)
我用阶乘就ok了
假设我的号末尾4位数任意,
有200人来抽,有人和我抽中相同尾号的概率是
1-9999/10000 x 9998/10000 x …… x 9800/10000 x 9799/10000 =1-9999!/9799!/10000的200次方=0.8678
如果500人来抽,有人和我抽中相同尾号的概率是
1-9999!/9499!/10000的500次方=0.9999970666
如果有1000人来抽,有人和我抽中相同尾号的概率是
1-9999!/8999!/10000的1000次方=0.99999999999999999999996837329152
五里雾 (2008-6-04 14:45:15)
发现11L和我算法一样
9L那个算法不对
要用1减去不是同天生日的人的概率的
就是
50个人 有人和我同一天生日的概率是
1-364!/314!/365的50次方=0.9744
至于为啥要用减的而不能直接照9L乘出来。。。参看一下高中数学的概率部分
MaiInverse (2008-6-04 15:27:38)
QUOTE:
活了23年还没有认识一个和自己同年同月同日生的人...也没有刻意去找过同年同月同日生的人……
天才仁村 (2008-6-04 22:58:05)
大的是任意两个相同的号码出现的几率的吧。。。
jon_dahl15 (2008-6-05 10:27:50)
完全不同的问题~~~~
如果问和你手机末4位相同的,那概率就小了,但要在所有参与的人中挑出2个末4位相同的,概率那是相当的大~~~~
search255 (2008-6-15 12:28:11)
QUOTE:
我没说和自己相同的很大我讨论的是一个“社会”效应——就是说“碰撞”出一对之后会有很大的"惊喜"效果