Re: [問題] 如何由特定數值產生隨機數列?已回收
※ 引述《ChuBomb (蛆小弟)》之銘言:
: 標題: [問題] 如何由特定數值產生隨機數列?
: 時間: Wed May 20 23:20:03 2009
:
:
: 如題
: 想要產生一個512筆資料的序列,
: 這512筆資料是由1,2,3,4這四個數值隨機組成的,
: 請問要用什麼function來產生呢?
: 感謝解答!
:
: EX:Y=[2 1 1 3 1 4 1 2 3 ..........2 3 3 1 4 ]共512筆
:
: --
: ※ 發信站: 批踢踢實業坊(ptt.cc)
: ◆ From: 125.224.130.100
: 推 panzertp:floor(1+4*rand(1,512)); 05/20 23:22
: 推 zhewei:randint(1,512,[1 4]) 05/21 00:37
: 推 laechan:喔喔!! 2F 的寫法超有fu的 ^^b 05/21 00:44
: 推 panzertp:2樓那指令新版好像沒有了? 05/21 01:10
那可以自己寫
function yy = randint2(m,n,ran)
yy=zeros(1,m*n);
mran=min(ran)-1;
lran=max(ran)-mran;
for i=1:lran:m*n
yy(1,i:i+lran-1)=mran+randperm(lran);
end
yy = reshape(yy,n,m)';
end
藉這個問題順便問一下, 自己寫好的 function 如果要變成全域
可用的 function(類似 simul efun 的概念) 要怎麼做?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
※ 編輯: laechan 來自: 118.170.104.28 (05/21 01:57)
推
05/21 02:34, , 1F
05/21 02:34, 1F
→
05/21 11:05, , 2F
05/21 11:05, 2F
→
05/21 11:06, , 3F
05/21 11:06, 3F
→
05/21 11:06, , 4F
05/21 11:06, 4F
→
05/21 11:06, , 5F
05/21 11:06, 5F
突然發現最下面的程式寫錯,整個移除好了
※ 編輯: laechan 來自: 220.131.227.202 (05/21 11:21)
推
05/21 11:22, , 6F
05/21 11:22, 6F
→
05/21 11:23, , 7F
05/21 11:23, 7F
yy=randint2(2,8,[1 4]);
yy =
Columns 1 through 12
1 4 2 3 2 3 1 4 3 4 1 2
Columns 13 through 16
2 1 4 3
這裡沒問題, 但做完 reshape 後就出問題了...
yy =
1 2 2 1 3 1 2 4
4 3 3 4 4 2 1 3
啊, 該不會 reshape 是先↓再→吧...改一下...
yy = reshape(yy,n,m)';
yy =
1 4 2 3 4 1 2 3
1 2 3 4 3 2 1 4
^_^
推 ericabab:如果是用迴圈一直call的話,用randint會慢很多哦
不過 ericabab 說的也有道理, 這題反而應該把 reshape 用在別處
function yy = randint2(m,n,ran)
mran=min(ran)-1;
lran=max(ran)-mran;
tmp=(m*n)/lran;
yy=zeros(tmp,lran);
for i=1:tmp
yy(i,:)=mran+randperm(lran);
end
yy = reshape(yy',n,m)';
end
※ 編輯: laechan 來自: 220.131.227.202 (05/21 11:29)
※ 編輯: laechan 來自: 220.131.227.202 (05/21 11:37)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
MATLAB 近期熱門文章
PTT數位生活區 即時熱門文章