相关疑难解决方法(0)

如何实现只有Random(0,1)的Random(a,b)?

可能重复:
如何通过已知的穿制随机函数RANDOM(0,1)在a,b之间获得均匀随机

算法简介一书中,有一个消息:

描述只调用Random(0,1)的过程Random(a,b)的实现.作为a和b的函数,您的程序的预期运行时间是多少?随机(a,b)结果的概率应该是纯粹均匀分布的,如随机(0,1)

对于Random函数,结果是a和b之间的整数,包括在内.例如,Random(0,1)生成0或1; 随机(a,b)生成a,a + 1,a + 2,...,b

我的解决方案是这样的:

for i = 1 to b-a
    r = a + Random(0,1)
return r
Run Code Online (Sandbox Code Playgroud)

运行时间为T = ba

它是否正确?我的解决方案的结果是否均匀分布?

谢谢

如果我的新解决方案如下所示:

r = a
for i = 1 to b - a //including b-a
    r += Random(0,1)
return r
Run Code Online (Sandbox Code Playgroud)

如果不正确,为什么r + = Random(0,1)使r不均匀分布?

random algorithm probability

11
推荐指数
1
解决办法
6427
查看次数

如何使用错误的生成器获取随机数

问题:假设您有一个随机数生成器randn(),它返回0到n-1之间的均匀分布的随机数.给定任意数m,写一个随机数生成器,返回0到m-1之间的均匀分布的随机数.

我的答案:

-(int)randm() {
    int k=1;
    while (k*n < m) {
        ++k;
    }
    int x = 0;
    for (int i=0; i<k; ++i) {
        x += randn();
    }
    if (x < m) {
        return x;
    } else {
        return randm();
    }
}
Run Code Online (Sandbox Code Playgroud)

它是否正确?

random algorithm objective-c

6
推荐指数
1
解决办法
404
查看次数

标签 统计

algorithm ×2

random ×2

objective-c ×1

probability ×1