[問題] 完全想不透 c和c++的亂數

看板C_and_CPP (C/C++)作者 (金屬製品)時間16年前 (2009/06/18 21:42), 編輯推噓1(101)
留言2則, 2人參與, 最新討論串1/1
多謝之前大大的幫忙,小弟完成了龐大的c++程式 但因為要寫成CUDA程式 所以我得要把C++翻譯成C 但翻譯完執行C的時候發現有很大的問題 首先最大的我發現的BUG在於亂數 我不知道是不是include的問題 但如果是c++的話 int i; double c; for(i=0;i<10;i++) {c=rand()/32767; cout<<c<<endl; } 就可以列印出十個不同的從0~1的random number 但如果是C 這是我全部的程式測試碼 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> int main() { srand(12345); int a, b; double c[10]; //開始亂數 並且列印 for(a=0;a<10;a++){ c[a]=rand()/(double)RAND_MAX; // 這行在添一個 printf("%d\n,c[a]) //會結果很不同於下面那個printf的結果 } for(b=0;b<10;b++){ printf("%d\n",c[b]); } } 我完全搞不懂c的亂數到底是怎麼運作的 完全連動也不能動 有三個問題 1.亂數只會一直連續出現同一個 並不會像C++一樣迴圈出現不同亂數 2.把c[a]不要用array的方式 用普通的變數x 也是一樣的結果 3.用了RAND_MAX結果出來的亂數超大 跟本不會介於0~1 拜託大大解惑 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.167.75.124

06/18 21:44, , 1F
printf("%lf\n", c[b])
06/18 21:44, 1F

06/18 22:16, , 2F
謝謝!!原來是輸出形式的問題 我問了笨問題了T_T
06/18 22:16, 2F
文章代碼(AID): #1AEaH8GZ (C_and_CPP)
文章代碼(AID): #1AEaH8GZ (C_and_CPP)