Re: [問題] 產生N個不重複的數列

看板C_and_CPP (C/C++)作者 (-半糖回憶-)時間14年前 (2011/07/21 10:00), 編輯推噓3(308)
留言11則, 7人參與, 最新討論串2/4 (看更多)
※ 引述《smilesun (-半糖回憶-)》之銘言: : 開發平台(Platform): (Ex: VC++, GCC, Linux, ...) : VC++ : 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) : 無 : 問題(Question): : 小弟目前想產生有N個不重複的數列,但所顯示的結果跟預期的不同。 : (目前N是設定為7) : 餵入的資料(Input): : 預期的正確結果(Expected Output): : 4126537 : 錯誤結果(Wrong Output): : 4720653 : 程式碼(Code):(請善用置底文網頁, 記得排版) int j,k,g,temp; static float A1[100]; //開100是因為後面還有可能會用到 for(g=1;g<=n;g++) : { : for(j=1;j<=n;j++) { : temp = rand()%n+1; //一開始就隨機產生一個數字 : for(k=1;k<=n;k++) : { if(temp == jtemp[k]) //根據temp的值一直去找相同的數 : { //jtemp陣列裡面存著1~n個順序,也就是01234567 j1 = temp; //j1是我之後的程式需要用到的變數 A1[j] = j1; //我將所找過的數字存進一個新的陣列,方便後面的for-loop能抓到 : jtemp[k] = 0; //另以找過的數字為0,為不找到重複的數值 : printf("%.f ",A1[j]); break; } } : } : } : 補充說明(Supplement): : 根據小弟的想法認為值應該都會存進A1矩陣之中,應該是沒問題的。 : 煩請各位指點小弟一下迷津。 不好意思,小弟沒把寫清楚。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.134.72.166

07/21 10:02, , 1F
你要產生一個數列 (一筆資料) 還是 很多數列(很多資料)?
07/21 10:02, 1F

07/21 10:03, , 2F
數列資料不重覆? 數列內元素也不重複?
07/21 10:03, 2F

07/21 10:08, , 3F
我要產生一個數列,數列內不重複。
07/21 10:08, 3F

07/21 10:14, , 4F
你顯然沒看懂我的推文...C語言的陣列是從 0 開始的...
07/21 10:14, 4F

07/21 11:03, , 5F
我覺得這有可能跑完loop還沒完整輸出...
07/21 11:03, 5F

07/21 11:51, , 6F
所以這只是程式的片斷@@?
07/21 11:51, 6F

07/21 12:39, , 7F
恩..對...但這部分只是在產生不重複的序列而已。
07/21 12:39, 7F

07/21 12:40, , 8F
謝謝各位的意見,目前已解決了。
07/21 12:40, 8F

07/21 12:45, , 9F
其實你可以考慮用洗牌法XD
07/21 12:45, 9F

07/21 12:50, , 10F
推薦使用樓上說的洗牌法
07/21 12:50, 10F

07/21 12:51, , 11F
shuffle~~
07/21 12:51, 11F
文章代碼(AID): #1E9uX9zp (C_and_CPP)
文章代碼(AID): #1E9uX9zp (C_and_CPP)