由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - CLSR: how to generate random(a, b) with random(0,1)
相关主题
求教Careercup 150 上的一道题目[合集] 给一个rand5(),写一个rand7()
用rand5()产生rand7()google intern 电面面经
如果给随即函数rand[1,5] 如何产生rand[1,7]Google面试回来
请教一道面试题rand5 -> rand7的解法?
问个随机数的问题问一个老题
问道cc150上的题看不懂careercup上一题的答案
问一道题明天onsite,求下bless了
请教个弱题:random generator: from 1~5 to 1~7Amazon On-site 面经+求bless,快两周了还没消息。
相关话题的讨论汇总
话题: random话题: clsr话题: generate话题: randnum话题: int
进入JobHunting版参与讨论
1 (共1页)
l******c
发帖数: 2555
1
.
l******c
发帖数: 2555
2
random(0,1) = 0 or 1
random(a, b) = a, a+1, ... b

【在 l******c 的大作中提到】
: .
l******c
发帖数: 2555
3
incorrect

【在 l******c 的大作中提到】
: random(0,1) = 0 or 1
: random(a, b) = a, a+1, ... b

l******c
发帖数: 2555
4
not right
r****o
发帖数: 1950
5
ranNum=a;
for (int i=0; i ranNum+=random(0,1);

【在 l******c 的大作中提到】
: not right
r****o
发帖数: 1950
6
为啥不对?

【在 r****o 的大作中提到】
: ranNum=a;
: for (int i=0; i: ranNum+=random(0,1);

l******c
发帖数: 2555
7
this algorithm is not right, not the detail issue.
I hope some fresh graduate can post an answer, because they must have learn
it in the classroom.

【在 r****o 的大作中提到】
: ranNum=a;
: for (int i=0; i: ranNum+=random(0,1);

r****o
发帖数: 1950
8
明白了,
那这样行吗?
用b-a的二进制形式,比如说是12=1100,共4位。
那么运行random(0,1)4次,每次相当于二进制的一位,如果凑成的二进制数小于等于
1100,则返回randNum+b-a,否则重来。
int diffSize=0;
int diff=b-a;
while(!diff)
{
diffSize++;
diff>>=1;
}
int randNum=MAX_INT;
while(randNum>b-a)
{
randNum=0;
for (int i=0; i {
randNum+=random(0,1)< }
}
return randNum+b-a;

learn
learn

【在 l******c 的大作中提到】
: this algorithm is not right, not the detail issue.
: I hope some fresh graduate can post an answer, because they must have learn
: it in the classroom.

p**********s
发帖数: 115
9
楼上正解!楼主可以看看编程珠玑第12章.或者
http://wansishuang.appspot.com/?p=59003
K******g
发帖数: 1870
10
为什么这么做?

【在 r****o 的大作中提到】
: 明白了,
: 那这样行吗?
: 用b-a的二进制形式,比如说是12=1100,共4位。
: 那么运行random(0,1)4次,每次相当于二进制的一位,如果凑成的二进制数小于等于
: 1100,则返回randNum+b-a,否则重来。
: int diffSize=0;
: int diff=b-a;
: while(!diff)
: {
: diffSize++;

相关主题
问道cc150上的题[合集] 给一个rand5(),写一个rand7()
问一道题google intern 电面面经
请教个弱题:random generator: from 1~5 to 1~7Google面试回来
进入JobHunting版参与讨论
c***p
发帖数: 221
11
这题考的是,给定n, 如何用random(0,1)生成 random(0, n-1)
如果把random(0,1)的output看做是一个bit,这个题目就转化成integer的二进制表示
问题了。

【在 K******g 的大作中提到】
: 为什么这么做?
r****o
发帖数: 1950
12
应该说接近a和b的数概率小,中间的数概率大。

【在 K******g 的大作中提到】
: 为什么这么做?
K******g
发帖数: 1870
13
呵呵,知道了,多谢提醒

【在 r****o 的大作中提到】
: 应该说接近a和b的数概率小,中间的数概率大。
K******g
发帖数: 1870
14
请教一下,为什么
已知rand[1,5], 求rand[1,7].
可以像下面一样做呢?
int rand7()
{
while (1)
{
int num = 5*(rand5() -1) + rand5()- 1;
if (num < 21) return num % 7;
}
}
有什么理由吗?

【在 p**********s 的大作中提到】
: 楼上正解!楼主可以看看编程珠玑第12章.或者
: http://wansishuang.appspot.com/?p=59003

s*******s
发帖数: 27
15
5*(rand5()-1) + (rand5()-1) gives rand24, which can be used to generate
rand7()

【在 K******g 的大作中提到】
: 请教一下,为什么
: 已知rand[1,5], 求rand[1,7].
: 可以像下面一样做呢?
: int rand7()
: {
: while (1)
: {
: int num = 5*(rand5() -1) + rand5()- 1;
: if (num < 21) return num % 7;
: }

K******g
发帖数: 1870
16
那为什么要先generate rand24?为什么不34,39, 或者29?
还有,为什么要if(num<21) ...? 产生24后,为什么不24%7+1 ? 多谢!

【在 s*******s 的大作中提到】
: 5*(rand5()-1) + (rand5()-1) gives rand24, which can be used to generate
: rand7()

1 (共1页)
进入JobHunting版参与讨论
相关主题
Amazon On-site 面经+求bless,快两周了还没消息。问个随机数的问题
从rand5 求rand7问道cc150上的题
amazon 新鲜面筋问一道题
[合集] 那个Google random generate 1-7的题怎么做啊?请教个弱题:random generator: from 1~5 to 1~7
求教Careercup 150 上的一道题目[合集] 给一个rand5(),写一个rand7()
用rand5()产生rand7()google intern 电面面经
如果给随即函数rand[1,5] 如何产生rand[1,7]Google面试回来
请教一道面试题rand5 -> rand7的解法?
相关话题的讨论汇总
话题: random话题: clsr话题: generate话题: randnum话题: int