首页 > 编程知识 正文

概率问题是什么意思,概率问题小学

时间:2023-05-05 11:47:43 阅读:267995 作者:3349

有个输出0和1的BIASED RANDOM,它以概率p输出1,以概率1-p输出0,以此RANDOM函数为基础,生成另一个RANDOM函数,该函数以1/2的概率输出1,以1/2的概率输出0

题目解答:

两次调用该RANDOM函数,如果其概率为P(x),调用2次

P(1) = p P(0) = 1-p

P’(1) =p P’(0) = 1-p

概率如下:

11 pp 10 p(1-p)

01 (1-p)p 00 (1-p)(1-p)

int random_0_1(){int i = RANDOM();int j = RANDOM();int result; while (true){if (i == 0 && j == 1){result = 0;break;}else if (i == 1 && j == 0){result = 1;break;}elsecontinue;} return result;

原文:https://blog.csdn.net/alexingcool/article/details/7862009
2 引申
有一个函数fun能返回0和1两个值,返回0和1的概率都是1/2,问怎么利用这个函数得到另一个函数fun2,使fun2也只能返回0和1,且返回0的概率为0.3,返回1的概率为0.7。
0000~1111每个串出现的概率都为1/16
如果生成的串为0000 0001 0010之一,则返回0 【0 1 2 】
如果生成的串为0011 0100 0101 0110 0111 1000 1001则返回1(共七个串)【3 4 5 6 7 8 9】

int func2(){ int n = 0; int v0 = fun(); int v1 = fun(); int v2 = fun(); int v3 = fun(); n |= v0; n |= (v1<<1); n |= (v2<<2); n |= (v3<<3); if(n <= 2) return 0;//0, 1, 2 else if(n <= 9) return 1;//3, 4, 5, 6, 7, 8, 9 return func2();}

扩展 生成1~ N 之间的数,每次返回1~N概率相等。
首先看2^n次方大于N 调用n次随机等概率函数(通过p(1-p))与(1-p)p 生成,如果n==数字多少 返回该数字。
思路
构建等概率函数,多次调用该函数。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。