- 论坛徽章:
- 0
|
本帖最后由 churchmice 于 2010-07-10 10:45 编辑
回复 50# guoruimin
侬说的对,凡事讲概率,那你可以计算一下,由于是25种情况种舍弃了4种,所以舍弃的概率是4/25
那么我连续舍弃100次的概率是多少? (4/25)^100
连续舍弃1000次呢?这概率是多么的小啊, 舍弃这么多次对于现代的计算机来说只是瞬间的事情,所以不存在性能的问题
如果恰如你所说,这个算法不幸的连续舍弃了n次,导致需要运行个1万年才能出结果,你可以去算算这个时候的n值是多大,对应的概率是多小?
这世界上没有100%会发生的事情,计算机中硬盘挂掉,cpu计算出现错误都有一个概率,就连寄存器(硬件)也会有一个meantime to work,也就是能够正常工作的概率。
照你这么说密码学都不用搞了,比如密钥是128位,那我随便猜一个也有1/(2^12的概率命中
但实际中的情况时,如果一个事件发生的概率很小(究竟多小算小要根据实际应用场景确定),我们就认为它不会发生,就可以放心的去用
反观你这个算法
有 1 - 5 之间的随机数 n1, n2, ... n7
则有 1 - 35 之间的随机数 m = n1 + n2 + ... + n7
则有 1 - 7 之间的随机数 k = m % 7 + 1
要证明k是等概率的有两种情况:
1. m是等概率分布在1-35之间,这个是不可能的
因为根本没有任何可能使得m=1
2.m在1-35之间的分布不是等概率的,但是经过m%7 + 1的操作后成为了等概率,那可以算一下
k=1要求: m=0,7,14,21,18,35
m=0 的概率为0
m=35的概率为 (1/5)^7
其余几种我没算过,但是你要这玩意加起来等于1/7,我认为很悬 |
|