Given function f1 that can generate integer 0 and 1 randomly, how to use f1 to build another function f2 that can generate integer between 0 and 29 randomly?
Given function f1 that can generate integer 0 and 1 randomly, how to use f1 to build another function f2 that can generate integer between 0 and 29 randomly?
x*y
12 楼
粉丝们热切希望能请lz给示范一下。。。
n*7
13 楼
while (true) { int a = f1()+2*f1()+4*f1()+8*f1()+16*f1(); if (a < 30) return a; }
a*u
14 楼
白求恩的声音要是说立起来了,我会信的。
【在 x******y 的大作中提到】 : 粉丝们热切希望能请lz给示范一下。。。
i*k
15 楼
不好,建议用shift int a = f1()+2*f1()+4*f1()+8*f1()+16*f1(); while(a >=30) { a = ((a<<1) | f1())&0x1f; } return a;
【在 n******7 的大作中提到】 : while (true) { : int a = f1()+2*f1()+4*f1()+8*f1()+16*f1(); : if (a < 30) return a; : }
x*y
16 楼
示范一下好让粉丝们学习一下
【在 a*******u 的大作中提到】 : 白求恩的声音要是说立起来了,我会信的。
n*7
17 楼
好在哪里? 可以节省很少的运算时间? 另外我感觉这样的结果不是uniform 分布的
【在 i****k 的大作中提到】 : 不好,建议用shift : int a = f1()+2*f1()+4*f1()+8*f1()+16*f1(); : while(a >=30) { : a = ((a<<1) | f1())&0x1f; : } : return a;
a*u
18 楼
请翻白求恩大作。。。
【在 x******y 的大作中提到】 : 示范一下好让粉丝们学习一下
v*e
19 楼
int a=0; for(i=0;i<32;i++) { a=a<<1 & f1(); } return a % 30;
x*y
20 楼
伴奏声太大, 听不真啊
【在 a*******u 的大作中提到】 : 请翻白求恩大作。。。
n*t
21 楼
貌似也不太严谨啊
【在 v********e 的大作中提到】 : int a=0; : for(i=0;i<32;i++) { : a=a<<1 & f1(); : } : return a % 30;
【在 h*******n 的大作中提到】 : Given function f1 that can generate integer 0 and 1 randomly, how to use f1 : to build another function f2 that can generate integer between 0 and 29 : randomly?
k*n
32 楼
有什么问题吗
【在 a9 的大作中提到】 : 打回去
n*7
33 楼
这结果是binomial distribution B(29,0.5)
【在 l*****n 的大作中提到】 : for (i=0;i<29;i++) a+=f1() : : f1