今天在逛CU的时候,发现了一个很有意思的,这个帖子的楼主问了一个问题:有个函数foo,返回0的概率是60%,返回1的概率是40%,让你自己写一个函数,使返回0和1的概率是50%,用前面说的foo函数实现,不能用像c++里面的rand这类的函数,怎么解?
有个人说的方法很不错:因为生成0-1的概率和生成1-0的概率是一样的(不算1-1,0-0),那么把0-1->1,1-0->0,这样就能使生成0和1的概率都为50%。但后来有人说这个算法不收敛,我也不知道为什么不收敛,反正上课闲的无聊,就想了另一个方法:既然foo函数生成0的概率为60%,生成1的概率为40%,那么我先来生成N个随机数,用a[N]保存,此时数组a中0占60%,1占40%(N足够大),然后我把60%中的10%由0变成1,这样0和1就各占50%。
我也不知道这个方法到底对不对,若有哪个大牛发现其中有不对的地方,请指教。
阅读(2908) | 评论(2) | 转发(0) |