看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) windows 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 當我在執行rand_table的迴圈時第一次的結果跟第二次結果完全一樣,不知道是為什麼 每次執行後有清除randan的資料在執行,是哪裡需要改嗎? 餵入的資料(Input): 預期的正確結果(Expected Output): 錯誤結果(Wrong Output): 程式碼(Code):(請善用置底文網頁, 記得排版) void set_rand_table() { float Ur[11000], Vr[11000], nrand[11000]; srand(time(NULL)); for (int k = 0 ; k < 11000; k++){ Ur[k] = (float)rand()/RAND_MAX; Vr[k] = (float)rand()/RAND_MAX;} for (int k = 0 ; k < 11000; k++) nrand[k] = sqrt(-2.0f * log( Ur[k] )) * cosf( 6.283185307179586f * Vr[k]);// * 0.707106781186547f; //gaussian wave packet cudaMemcpyToSymbol(randtable, nrand, 44000, 0, cudaMemcpyHostToDevice); } 補充說明(Supplement): -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.255.234.23
LPH66:srand(time(NULL)) 在極近時間執行多次有機會取到相同的亂數 05/12 14:12
LPH66:你該做的是把 srand 拿到程式的一開始執行一次就好 05/12 14:12