一个函数产生0/1的概率为 二分之一, 如何生成一个新函数使得产生0的概率为十分之三 产生1的概率为十分之七
2013-04-16 23:06
537 查看
转自出处
(1) 有一个函数fun能返回0和1两个值,返回0和1的概率都是1/2,问怎么利用这个函数得到另一个函数fun2,使fun2也只能返回0和1,且返回0的概率为0.3,返回1的概率为0.7。
分析:
Nathan 16:42:59
随机生成长度为4的01串
0000~1111每个串出现的概率都为1/16
Nathan 16:44:28
如果生成的串为0000 0001 0010之一,则返回0
Nathan 16:45:45
如果生成的串为0011 0100 0101 0110 0111 1000 1001则返回1(共七个串)
否则,递归,重新来过
代码:
[cpp] view
plaincopy
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();
}
说明:
生成的四个数放到n的低四位上
0000 对应十进制数 0
0001 对应十进制数 1
...
1111对应十进制数15
16个串对应0 ~ 15共16个整数
(1) 有一个函数fun能返回0和1两个值,返回0和1的概率都是1/2,问怎么利用这个函数得到另一个函数fun2,使fun2也只能返回0和1,且返回0的概率为0.3,返回1的概率为0.7。
分析:
Nathan 16:42:59
随机生成长度为4的01串
0000~1111每个串出现的概率都为1/16
Nathan 16:44:28
如果生成的串为0000 0001 0010之一,则返回0
Nathan 16:45:45
如果生成的串为0011 0100 0101 0110 0111 1000 1001则返回1(共七个串)
否则,递归,重新来过
代码:
[cpp] view
plaincopy
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();
}
说明:
生成的四个数放到n的低四位上
0000 对应十进制数 0
0001 对应十进制数 1
...
1111对应十进制数15
16个串对应0 ~ 15共16个整数
相关文章推荐
- Matlab函数产生的Figure图形框如何嵌入C# Winform中的一个Panel中?
- 给定一个函数rand()能产生0到n-1之间的等概率随机数,问如何产生0到m-1之间等概率的随机数?
- eclipse 中main()函数中的String[] args如何使用?通过String[] args验证账号密码的登录类?静态的主方法怎样才能调用非static的方法——通过生成对象?在类中制作一个方法——能够修改对象的属性值?
- 给定一个函数rand()能产生0到n-1之间的等概率随机数,问如何产生0到m-1之间等概率的随机数?
- 如何用C语言产生10000个不重复的随机整数?并且把它写入到一个文本文件中作为其他函数测试用的数据。
- 如何压力测试一个唯一主键函数是否真的不会生成重复主键得方法
- 【转】给定一个函数rand5(),使函数rand7()可以随机等概率的生成1-7的整数
- 【转】给定一个函数rand5(),使函数rand7()可以随机等概率的生成1-7的整数
- 给一个生成0-a的随机整数的函数,如何生成0-b的随机整数? (a,b都是正整数且之间没有关系)
- 给定一个函数rand5(),使函数rand7()可以随机等概率的生成1-7的整数
- JS如何生成一个不重复的ID的函数
- 给定一个函数rand5(),使函数rand7()可以随机等概率的生成1-7的整数
- 给一个函数,返回 0 和 1,概率为 p 和 1-p,请你实现一个函数,使得返回 01 概率一样。
- 【转】给定一个函数rand5(),使函数rand7()可以随机等概率的生成1-7的整数
- 给定一个函数rand()能产生0到n-1之间的等概率随机数,问如何产生0到m-1之间等概率的随机数?
- js 如何生成一个不重复的ID的函数
- python 9-1 如何使用函数装饰器,定义函数装饰器,用来生成一个原函数基础添加新功能的函数,替代原函数
- 给定一个能生成1到5随机数的函数,如何利用它来生成1到7的随机数。
- 给定一个函数rand5(),使函数rand7()可以随机等概率的生成1-7的整数