由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 问一道面试题
相关主题
[合集] 这个问题怎么解效率最高随机数与概率
看一道面试题请教个C++程序设计
如何用C++产生随机Poisson分别的随机数?一FG家常见题 (转载)
Check if the sum of two integers in an integer array eqauls to the given number Javascript Q: 怎样产生10个不同的随机数?
面试题 -算法? 如何编程实现以下简单的组合问题
问一个C语言中整型和浮点运算的问题 (转载)[合集] 请教一个大公司的笔试题,关于c++随机数的
请教:用C怎么产生uniform的随机数 (转载)[合集] 面试题: Shuffle a deck of cards
请教c++真随机数的生成请教随机数生成问题
相关话题的讨论汇总
话题: f1话题: randomly话题: generate话题: integer话题: function
进入Programming版参与讨论
1 (共1页)
h*******n
发帖数: 22
1
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?
n******7
发帖数: 12463
2
while (true) {
int a = f1()+2*f1()+4*f1()+8*f1()+16*f1();
if (a < 30) return a;
}
h*******n
发帖数: 22
3
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?
n******7
发帖数: 12463
4
while (true) {
int a = f1()+2*f1()+4*f1()+8*f1()+16*f1();
if (a < 30) return a;
}
i****k
发帖数: 668
5
不好,建议用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;
: }

n******7
发帖数: 12463
6
好在哪里?
可以节省很少的运算时间?
另外我感觉这样的结果不是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;

v********e
发帖数: 1985
7
int a=0;
for(i=0;i<32;i++) {
a=a<<1 & f1();
}
return a % 30;
n*****t
发帖数: 22014
8
貌似也不太严谨啊



【在 v********e 的大作中提到】
: int a=0;
: for(i=0;i<32;i++) {
: a=a<<1 & f1();
: }
: return a % 30;

k*******n
发帖数: 190
9
F2 =floor(f1*29+0.5)
w********m
发帖数: 1137
10
nowhere的是标准答案了吧
相关主题
问一个C语言中整型和浮点运算的问题 (转载)随机数与概率
请教:用C怎么产生uniform的随机数 (转载)请教个C++程序设计
请教c++真随机数的生成一FG家常见题 (转载)
进入Programming版参与讨论
n*****t
发帖数: 22014
11
去掉 2*f1

【在 w********m 的大作中提到】
: nowhere的是标准答案了吧
a9
发帖数: 21638
12
打回去

【在 k*******n 的大作中提到】
: F2 =floor(f1*29+0.5)
l*****n
发帖数: 1648
13
for (i=0;i<29;i++) a+=f1()

f1

【在 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
发帖数: 190
14
有什么问题吗

【在 a9 的大作中提到】
: 打回去
n******7
发帖数: 12463
15
这结果是binomial distribution B(29,0.5)

【在 l*****n 的大作中提到】
: for (i=0;i<29;i++) a+=f1()
:
: f1

n******7
发帖数: 12463
16
我知道你想-2,这样range正好在29以内
但是这样就不是uniformly distributed的
起码,你没办法产生2,3

【在 n*****t 的大作中提到】
: 去掉 2*f1
n*****t
发帖数: 22014
17
对对对,有道理,疏忽了。sum * 29/32 是不是好点?

【在 n******7 的大作中提到】
: 我知道你想-2,这样range正好在29以内
: 但是这样就不是uniformly distributed的
: 起码,你没办法产生2,3

n******7
发帖数: 12463
18
把32个数挤到30个格子里面
还是不对啊

【在 n*****t 的大作中提到】
: 对对对,有道理,疏忽了。sum * 29/32 是不是好点?
n*****t
发帖数: 22014
19
float 运算的话没问题吧,迷糊了,这不是常规取 random 的方法吗?

【在 n******7 的大作中提到】
: 把32个数挤到30个格子里面
: 还是不对啊

l*****n
发帖数: 1648
20
我猜是有些数会被挤压到一起,这样概率增高就不是随机数了。 比如7,8,9,10

【在 n*****t 的大作中提到】
: float 运算的话没问题吧,迷糊了,这不是常规取 random 的方法吗?
相关主题
Javascript Q: 怎样产生10个不同的随机数?[合集] 面试题: Shuffle a deck of cards
如何编程实现以下简单的组合问题请教随机数生成问题
[合集] 请教一个大公司的笔试题,关于c++随机数的问个随机数的问题
进入Programming版参与讨论
n******7
发帖数: 12463
21
我们处理的是整数啊 离散的不是连续的 你最后还是要map成0-29的整数吧

【在 n*****t 的大作中提到】
: float 运算的话没问题吧,迷糊了,这不是常规取 random 的方法吗?
z*y
发帖数: 1311
22

一点起码的数学常识都没有

【在 l*****n 的大作中提到】
: for (i=0;i<29;i++) a+=f1()
:
: f1

j*a
发帖数: 14423
23
为啥是&不是|?

【在 v********e 的大作中提到】
: int a=0;
: for(i=0;i<32;i++) {
: a=a<<1 & f1();
: }
: return a % 30;

1 (共1页)
进入Programming版参与讨论
相关主题
请教随机数生成问题面试题 -算法?
问个随机数的问题问一个C语言中整型和浮点运算的问题 (转载)
请教个rng的问题请教:用C怎么产生uniform的随机数 (转载)
hashcode面试题 (转载)请教c++真随机数的生成
[合集] 这个问题怎么解效率最高随机数与概率
看一道面试题请教个C++程序设计
如何用C++产生随机Poisson分别的随机数?一FG家常见题 (转载)
Check if the sum of two integers in an integer array eqauls to the given number Javascript Q: 怎样产生10个不同的随机数?
相关话题的讨论汇总
话题: f1话题: randomly话题: generate话题: integer话题: function