[問題] C語言 srand問題

看板C_and_CPP作者 (嚕拉拉)時間15年前 (2010/12/17 01:06), 編輯推噓1(103)
留言4則, 4人參與, 最新討論串1/1
for(j=0; j<3000; j++) { for(i=0;i<42;i++) { srand(time(NULL)+lotto[i]); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ n = rand()%42; tmp = lotto[i]; lotto[i] = lotto[n]; lotto[n] = tmp; } } 這是在網站上截取一段程式碼 題目是做一個大樂透開獎號碼,42取7 以上是陣列亂數兩兩交換3000次的迴圈 問題在於^^^^^這個符號的部分 如果我把srand()裡面的+lotto[i] 拿掉~~每次出現的號碼都會一樣~~ 可以請問原因嗎??? 下面是我自己寫的 srand(time(NULL)); for(j=0;j<5000;j++) { n=rand()%42; i=j%42; temp=lotto[i]; lotto[i]=lotto[n]; lotto[n]=temp; }; 上面的寫法 跟我的寫法~哪一種會比較好?? 感謝!!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.32.144.251

12/17 01:39, , 1F
srand 不要放在 loop 裡面,只要用一次就可以了.
12/17 01:39, 1F

12/17 02:14, , 2F
你先弄清楚srand是在做啥吧
12/17 02:14, 2F

12/17 06:55, , 3F
其實上面那個做法和 RC4 還滿像的....
12/17 06:55, 3F

12/17 08:01, , 4F
可以google或找書,查清楚srand的用途
12/17 08:01, 4F
文章代碼(AID): #1D2aSCGK (C_and_CPP)