[問題] 將n個數字隨機排列已回收

看板MATLAB作者 (呦呦羔羊)時間15年前 (2011/04/08 23:12), 編輯推噓0(002)
留言2則, 2人參與, 最新討論串1/1
小弟是matlab的新手,最近教授上課要我們寫一個有關抽樣的程式, 要取n個數字,取n次,不重複。 不能用已經造好的,一輸入答案就出來的函數(e.g. randperm()) 後來再隔一次上課的時候,教授說有方法可以一行就能完成這件事, 但是在下我一直想不到。 他講的演算法是,產生n個隨機變數就能有n個大小,然後使用sort之類的東西。 他只有做提示,提示也到此為止…… 小弟我左思右想,想了一個很接近的,但是很顯然的不是。 首先,我寫了這個: X=rand(n); X2=sort(X) ans=find(X2(1)==X); 這樣,ans就抓到了X在第幾個位置和X2(1)的值是相等的, 也因此在下寫了下面一式: X=rand(n); ans=find(sort(X)==X); 結果,這樣的寫法只會抓出sort後沒有更換位置的值在哪個位置。 而不是我預期的:抓出所有位置產生一個向量。 如果單純的只轉置sort(X)會長度不符、加上"."的話會運算錯誤…… -- 忘了離開時門鎖了沒 忘了這是第幾次後悔 忘了怎麼開始去喜歡 忘了要好好過每一天 TB 忘了洗衣機裡的T-血 忘了當初愛上的是誰 忘了一個人怎麼習慣 忘了我還有大好歲月 ia 忘了當你面說聲再見 忘了我本來有的底線 忘了別恐慌順其自然 忘了比起你我更耀眼 zc 忘了你和你熱鬧花邊 忘了對自己有多抱歉 和自己相處比較實在 好險現在我即時發現 z 你 也只是做自己 不需為誰 我 也只是卡到陰 現在OK 你 也只是一不小心 過分了點 y 嘿 別說出來 這 就太不帥 讓 一切淡然 反正 早沒人在 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.168.186.206

04/08 23:41, , 1F
用[B,I]=sort() 可以輸出索引值 這個索引剛好可以當randperm
04/08 23:41, 1F

04/09 00:08, , 2F
THX~
04/09 00:08, 2F
文章代碼(AID): #1DdoNGBa (MATLAB)
文章代碼(AID): #1DdoNGBa (MATLAB)