看板 C_and_CPP 關於我們 聯絡資訊
不好意思,之前我有po一篇類似亂數但保證不重複的程式碼, 後來有和朋友討論後,想到的解決辦法的概念是, 將亂數存到陣列中,當產生一筆亂數值後,會和之前的前幾筆做比較, 如果發生重複,該筆亂數值會重新計算,並再做比較, 不過程式在執行後,還是會發生重複的情形(雖然機率不高XDD),不知道哪裡出了錯... 程式碼可能有點長,希望各位能見諒,幫我找蟲...先跟妳們說聲謝謝。 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> int main(void) { char name[40][80]; int count=0; int number1[10]; int length,number,i,j,number2; int onetimestate; srand(time(NULL)); //一定要加入此程式碼 printf ("請輸入字串,最多40筆,按 enter 即離開。\n"); while (count<40) { printf ("請輸入第%d個字串: ",count+1); gets(name[count]); length=strlen(name[count]); if(length==0) break; count++; } printf ("您總共輸入了%d個字串\n",count); if (count%2==0) number=count/2; for (i=0;i<number;i++) { number1[0]=(rand()%count+1); if (i>0) { onetimestate=0; do { number2=(rand()%count+1); onetimestate=0; for (int j=0;j<i;j++) { if (number1[j]==number2) onetimestate=1; } }while (onetimestate==1); number1[i]=number2; } } for (i=0;i<number;i++) { printf ("%d\n",number1[i]); } system ("pause"); return 0; } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.130.204.22
dendrobium:其實...亂數不代表不會重複吧... 02/12 14:38
csihcs:可以參考#1ApC1FjJ (C_and_CPP)討論串 02/12 17:29
tinlans:亂數要符合統計學上的 uniform distribution,可以重複。 02/12 17:36