【发布时间】:2011-09-18 01:03:40
【问题描述】:
我被要求使用random(0,1) 生成a 和b 之间的随机数。 random(0,1) 生成一个介于 0 和 1 之间的统一随机数。
我回答了
(a+(((1+random(0,1))*b))%(b-a))
我的面试官对我在这段表达中使用b 不满意:
(((1+random(0,1))*b))
然后我尝试将答案更改为:
int*z=(int*)malloc(sizeof(int));
(a+(((1+random(0,1))*(*z)))%(b-a));
后来问题改为从random(1,5) 生成random(1,7)。我的回应是:
A = rand(1,5)%3
B = (rand(1,5)+1)%3
C = (rand(1,5)+2)%3
rand(1,7) = rand(1,5)+ (A+B+C)%3
我的答案正确吗?
【问题讨论】:
-
请格式化代码,我已经告诉你如何
-
无需提及您的未来雇主。我稍微改写了您的问题并格式化了所有内容,请考虑在继续更新之前查看我的编辑。
-
rand(1,7) := rand(1,5)工作。 -
当你说“在a和b之间”时,你的意思是
b是一个可能的返回值吗?我猜random(0,1)总是返回小于 1 的值?这会让这件事变得特别棘手。