程式設計 作業~ c++

2007-08-11 11:59 pm
能否麻煩看到此篇的人~幫忙解題
c++ 甚至其他



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

回答 (3)

2007-08-12 12:56 am
✔ 最佳答案
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#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-13 6:30 am
你也只點的不錯唷~Jacob Lee 我收下了~!
2007-08-12 9:56 am
要快,綿羊法不錯用,我也很常用;

但,要均勻性,綿羊法不太行!
要用
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 補充:
不客氣 ^_^


收錄日期: 2021-04-27 17:15:14
原文連結 [永久失效]:
https://hk.answers.yahoo.com/question/index?qid=20070811000010KK06396

檢視 Wayback Machine 備份