[閒聊] 昨天下課

看板NTUEE115作者 (Range)時間13年前 (2011/06/08 09:37), 編輯推噓5(501)
留言6則, 6人參與, 最新討論串1/1
有些同學有問一些不錯的問題 不過後來我也忘記講了 就在這邊講一下 1) random似乎不夠亂? 昨天的做法是 for(int i=0; i<N; ++i){ int j = rand() % N; //產生 0 ~ N-1 之間的亂數 int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } 所以可能的變化是N的N次方 (N^N) 不是N!的倍數,所以每個數在每個位置的出現機率不同 比較好的做法是 for(int i=0; i<N; ++i){ int j = (rand() % (N-i)) + i; //產生 i ~ N-1 之間的亂數 int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } 這樣每個地方出現的機率就相同了 2) this 在C++和C#的用法不同? 在複數那個例子中,加法是這樣寫的 Complex add(Complex c) { Complex ret; //to be returned ret.real = (*this).real + c.real; ret.imag = (*this).imag + c.imag; return ret; } 但是到了C#的Hello world程式 卻是這樣寫的 public void button1_Click(object sender, EventArgs e) { this.label1.Text = "World"; } 為什麼在C++多了一個奇怪的 * 呢? 因為在C++裡,this這個東西是指標(pointer) 而C#裡面,沒有指標這種東西 (除非用unsafe mode) 然後在新鮮人課程中,我們沒有打算要講指標這玩意XDD 所以如果你看不懂的話,也是沒什麼關係 長大之後就會懂了。 -- 如果上面都看不懂的話 其實也沒什麼關係 昨天只要聽懂ptt和縮排我就心滿意足了XD -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.166.8.201

06/08 17:34, , 1F
長大之後就會懂了...推!
06/08 17:34, 1F

06/08 17:51, , 2F
是說在C++之下,(*this). 又可寫成this-> 很直覺唉XD
06/08 17:51, 2F

06/08 19:34, , 3F
如果需要指標的教學可以從 113 HW 板轉過來 XD
06/08 19:34, 3F

06/08 22:05, , 4F
推樓上的指標教學XD
06/08 22:05, 4F

06/09 21:03, , 5F
推推推
06/09 21:03, 5F

06/10 02:19, , 6F
推三樓湯米的教學
06/10 02:19, 6F
文章代碼(AID): #1Dxj9R6X (NTUEE115)