【发布时间】:2011-10-08 05:04:16
【问题描述】:
问题:假设您有一个随机数生成器 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();
}
}
这是正确的吗?
【问题讨论】:
-
你有没有关于
n和m的更多信息? -
部分问题是我需要对 n 和 m 做出什么假设才能完成这项工作,但我认为它适用于任何数字。
-
你假设关于 n,m 的一些事情:1) 都是整数,2) 都是正数
标签: objective-c algorithm random