English Deutsch Français Italiano Español Português 繁體中文 Bahasa Indonesia Tiếng Việt ภาษาไทย
所有分類

能否麻煩看到此篇的人~幫忙解題
c++ 甚至其他



亂數產生之函數int genran( )
要求:設定亂數的範圍
例:genran(100 )傳回介於0-99間的任意整數 早好能搭配時間產生亂數
希望可另外測試(50)也能正常

2007-08-11 11:59:57 · 3 個解答 · 發問者 二姐 1 in 電腦與網際網路 程式設計

3 個解答

#include
#include
#include
#define randomize() srand((unsigned)time(NULL));
int genran(int MAX){
return rand()%MAX;
}
int main(int argc, char *argv[]){
//=====START=====//
int i;
randomize();
for(i=0;i<10;i++){
printf("random number: %d\n",genran(50));
}
//=====END=====//
system("PAUSE");
return 0;
}

2007-08-11 12:56:35 · answer #1 · answered by Big_John-tw 7 · 0 0

你也只點的不錯唷~Jacob Lee 我收下了~!

2007-08-12 18:30:03 · answer #2 · answered by 二姐 1 · 0 0

要快,綿羊法不錯用,我也很常用;

但,要均勻性,綿羊法不太行!
要用
int genran(int MAX)
{ return MAX * (float) rand( ) / RAND_MAX; }

當然,你可以
使用 (double) 會更準,(當然會再慢一點)
變成 (int) (MAX * (float) rand( ) / RAND_MAX); 會少個 Warning

我也只用過一次這種均勻性較好的用法;
但極講究均勻性的人或專案,會建議你用它。

2007-08-12 01:57:03 補充:
另外,你如果是在 Linux 或 Unix上跑,建議你用 drand48 系的函數,
各方面的性能會更好。
唯二的缺點是:
1. 慢!
2. 目前在 Windows 系的 Compiler 應該還不能用。

2007-08-13 14:01:16 補充:
不客氣 ^_^

2007-08-11 21:56:38 · answer #3 · answered by ? 7 · 0 0

fedest.com, questions and answers