由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 你们看过programming pearls (2nd edition English) or 正在看的同学们
相关主题
one c++ question这个看着很白痴的问题有更好的解法吗?
C的argc问题帮看看这段code
为什么我这段简单的程序segment fault问一道kth smallest element的题目
c++ 程序一问leetcode上一题,求正解
bloomberg assessment的机经,c语言的(20道题)写了一个find kth number in 2 sorted arrays的code 请大牛看
C++ online Test 又一题一题
C++ 一题大家能说说(leecode) Permutation Sequence这道题后的数学思路吗?
这题哪错了?一道C语言题
相关话题的讨论汇总
话题: int话题: genknuth话题: english话题: pearls话题: random
进入JobHunting版参与讨论
1 (共1页)
I**A
发帖数: 2345
1
我糊涂了。。
Pg 127上的那个genknuth(int m, int n)算法
明明不能select exactly m integers啊,
为嘛作者大师说能?
大家给我解解惑please...
v***u
发帖数: 40
2
帮顶!我也没搞清楚,co-ask...
d**e
发帖数: 6098
3
那一页第一行开始就是解释。
由于m<=n,那么总有一个i = n - m,那if里是true,
然后m--,(bigrand()%(n-i) 直到m=0,这时就肯定是输出m个数

【在 I**A 的大作中提到】
: 我糊涂了。。
: Pg 127上的那个genknuth(int m, int n)算法
: 明明不能select exactly m integers啊,
: 为嘛作者大师说能?
: 大家给我解解惑please...

I**A
发帖数: 2345
4
问题我就是没看明白他的解释。。
而且我拿程序测试了,不是m个数儿

【在 d**e 的大作中提到】
: 那一页第一行开始就是解释。
: 由于m<=n,那么总有一个i = n - m,那if里是true,
: 然后m--,(bigrand()%(n-i): 直到m=0,这时就肯定是输出m个数

d**e
发帖数: 6098
5
你看得还真快啊,我跟你同一天买的,我还一页没翻过 -_-!

【在 I**A 的大作中提到】
: 我糊涂了。。
: Pg 127上的那个genknuth(int m, int n)算法
: 明明不能select exactly m integers啊,
: 为嘛作者大师说能?
: 大家给我解解惑please...

I**A
发帖数: 2345
6
哈哈哈,coupon是我给找的不?
我关键是下周要用。。。

【在 d**e 的大作中提到】
: 你看得还真快啊,我跟你同一天买的,我还一页没翻过 -_-!
d**e
发帖数: 6098
7
对……你给的。。。 谢谢哈。。。
唉,说起惭愧,我还没机会用 -_-!

【在 I**A 的大作中提到】
: 哈哈哈,coupon是我给找的不?
: 我关键是下周要用。。。

d**e
发帖数: 6098
8
刚写了一下,出来的结果是对的,不知你是不是某一步写错了。
#include
#include
#include
using namespace std;
void genknuth(int m, int n)
{
for(int i = 0; i < n; i++)
{
if(rand() % (n-i) < m)
{
cout << i << endl;
m--;
}
}
}
int main(int argc, char * argv[])
{
srand(time(0));
genknuth(15, 20);
return 0;
}

【在 I**A 的大作中提到】
: 问题我就是没看明白他的解释。。
: 而且我拿程序测试了,不是m个数儿

I**A
发帖数: 2345
9
不客气
请你继续去钻研那个pg 127
以后你肯定用得着
我撤了

【在 d**e 的大作中提到】
: 对……你给的。。。 谢谢哈。。。
: 唉,说起惭愧,我还没机会用 -_-!

I**A
发帖数: 2345
10
我用Java写的
public static void genKnuth(int m, int n)
{
Random myr = new Random();
for(int i=0; i if((myr.nextInt() % (n-i)) < m){
System.out.print(i + " ");
m--;
}
}

public static void main(String[] args) {
genKnuth(5,20);
}
产生的总是多于5个。。
难道这个random function有问题???我觉得不应该啊。
而且我把你的解释和作者的解释又看了好几遍,还是没明白。。

【在 d**e 的大作中提到】
: 刚写了一下,出来的结果是对的,不知你是不是某一步写错了。
: #include
: #include
: #include
: using namespace std;
: void genknuth(int m, int n)
: {
: for(int i = 0; i < n; i++)
: {
: if(rand() % (n-i) < m)

相关主题
C++ online Test 又一题这个看着很白痴的问题有更好的解法吗?
C++ 一题帮看看这段code
这题哪错了?问一道kth smallest element的题目
进入JobHunting版参与讨论
d**e
发帖数: 6098
11
debug过,才知道java的Random.nextInt()可正可负的 -_-!
一直以为是非负的。
所以恰恰解释了为什么会多过m个.
用Random.nextInt(int)这个函数才产生非负。
所以改成 myr.nextInt(n)就可以了。

【在 I**A 的大作中提到】
: 我用Java写的
: public static void genKnuth(int m, int n)
: {
: Random myr = new Random();
: for(int i=0; i: if((myr.nextInt() % (n-i)) < m){
: System.out.print(i + " ");
: m--;
: }
: }

I**A
发帖数: 2345
12
多谢!
的确是改成getNext(n)就对了。
啊, 我终于明白了为嘛是exactly m integers了,笨~~

【在 d**e 的大作中提到】
: debug过,才知道java的Random.nextInt()可正可负的 -_-!
: 一直以为是非负的。
: 所以恰恰解释了为什么会多过m个.
: 用Random.nextInt(int)这个函数才产生非负。
: 所以改成 myr.nextInt(n)就可以了。

d**e
发帖数: 6098
13
下周onsite吧,祝成功:p
I**A
发帖数: 2345
14
thanks thanks...:)

【在 d**e 的大作中提到】
: 下周onsite吧,祝成功:p
K******g
发帖数: 1870
15
大家不觉得programming pearls里很多东西是废话吗?仔细看了大半天,拗口难懂的表
达,结果对面试什么帮助都没有 (除了少数几个算法)。
我真的不明白,为什么那么多人反复推荐那本书。
比如说LZ讲的那个算法,在P129页上面不是有个更简单的吗?为什么要反复的讲解那个
P127页那个呢,我觉得很多地方是浪费时间。

【在 I**A 的大作中提到】
: thanks thanks...:)
l******e
发帖数: 12192
16
kinda agree. hehe

【在 K******g 的大作中提到】
: 大家不觉得programming pearls里很多东西是废话吗?仔细看了大半天,拗口难懂的表
: 达,结果对面试什么帮助都没有 (除了少数几个算法)。
: 我真的不明白,为什么那么多人反复推荐那本书。
: 比如说LZ讲的那个算法,在P129页上面不是有个更简单的吗?为什么要反复的讲解那个
: P127页那个呢,我觉得很多地方是浪费时间。

1 (共1页)
进入JobHunting版参与讨论
相关主题
一道C语言题bloomberg assessment的机经,c语言的(20道题)
懒得写了,想练手的就写写贴在这里吧C++ online Test 又一题
问一个c++ 函数指针的问题C++ 一题
请教一个入门级的C的指针问题这题哪错了?
one c++ question这个看着很白痴的问题有更好的解法吗?
C的argc问题帮看看这段code
为什么我这段简单的程序segment fault问一道kth smallest element的题目
c++ 程序一问leetcode上一题,求正解
相关话题的讨论汇总
话题: int话题: genknuth话题: english话题: pearls话题: random