看板 C_and_CPP 關於我們 聯絡資訊
我是寫嵌入式的... 所以有些C函式不能用.... 大概寫一下我的運作程式碼 INT32U i,j,a[16],array[4][4],DD[]={218,308,404,497,120,210,300,390}; while(1) { srand(rand()); for(i=0;i<16;i++) { ran: a[i]=1+rand()%16; 產生1~16的隨機亂數 for(j=0;j<i+1;j++)檢查是否重複 { if(i==0)只有一個數時不用檢查 break; if(a[i]==a[j])如果重複...隨機亂數重新產生 goto ran; } array[i/4][i%4] = a[i];array裡是把1~16的隨機數放到4*4的矩陣 } } 但是我這樣寫跑不出一個結果 請問我有哪邊錯誤了嗎@@? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.127.113.74
TsinTa:一個是ran,一個是ram,goto不到@@" 10/05 11:41
SuperEel:不好意思...我在這邊打錯了....但實際上兩個都是打n 10/05 11:43
※ 編輯: SuperEel 來自: 122.127.113.74 (10/05 11:44)
TsinTa:把j<i+1改成j<i 10/05 11:44
OgamiIchiro:呃 對於產生這種亂數的方式 可以先開一個16格的array 10/05 11:47
SuperEel:謝謝TsinTa大大....改完後剛好可以了^^ 10/05 11:48
OgamiIchiro:然後把1~16照順序放進去 接著randomly swap一段時間 10/05 11:49
TsinTa:不客氣,不過這樣產生亂數似乎不太有效率XD 10/05 11:49
OgamiIchiro:就應該可以拿到想要的結果? 10/05 11:50
SuperEel:嵌入式的好像不能用randomly swap...\ 10/05 11:59
SuperEel:因為time也不能用@@" 10/05 11:59
SuperEel:TsinTa大大有什麼建議嗎@@??? 10/05 12:00
james732:randomly swap 跟 time 能不能用...有關係嗎 XD 10/05 12:05
loveme00835:srand 跟 rand 都在用了你還不能 shuffle 他嗎? = =" 10/05 12:31
SuperEel:我主要想說的是...很多函式都不能用... 10/05 12:32
james732:我想你對 randomly swap 有誤會 它應該只會用到 rand() 10/05 12:34
james732:像這樣 http://nopaste.csie.org/8cea4 10/05 12:40
james732:產生16個不重覆的數字,簡單又快速 10/05 12:40
loveme00835:XD 10/05 12:41
SuperEel:喔...感謝james732大大的分享 10/05 13:15
final01:可以用break 何必用goto 10/05 13:59
final01:喔!看錯 原來你要重選 10/05 14:00