在C++環境下產生特定範圍的亂數

2007-09-21 1:06 am
必須要能自訂min,max以及亂數數量
舉例來說
我想要產生n個變數,而min =1 ,max=100
先用
int n;
int *a=new int [];
產生我所需的array
然後要怎麼定義在MIN和MAX之間的隨機變數放入ARRAY裡面呢?
一直卡在這
還有要用random seed ,
哪位高手可以幫忙解答阿~感激喔
更新1:

int main() { void inputinfo(); { int min ; int max; cout<<"please input min"; cin>>min; cout<<"please input max"; cin>>max; int n; int *a=new int []; cout<< "Please input n numbers you want to sort:"<<endl; cin>>n;

更新2:

for(int i=0;i<n;i++) { *(a+i)=rand()%(max-min)+min; } for (i=1;i<=n;i++) cout<<a[i]<<" "; int sum; for (i=1;i<=n;i++) sum += a[i]; cout<<"sum="<<sum; } return 0; } 結果是:compile與debug都可以過,但是run的時候會出問題 就是算SUM那邊會變成負值,不知道錯在哪裡??可以再幫我指點一下嗎~感激喔

回答 (3)

2007-09-21 4:01 am
✔ 最佳答案
#include<iostream>
#include<cstdlib>
#include<cmath>
#include<ctime>
#define randomize() srand((unsigned)time(NULL))
using namespace std;
void sort(int Len, int *Num)
{
int temp;
for(int i=0;i<Len;i++)
for(int j=i;j<Len;j++)
if(Num[i]>Num[j])
temp=Num[i],Num[i]=Num[j],Num[j]=temp;
}
int main(int argc, char** argv){
//=====START=====//
int n;
cout<<"Input N: ",cin>>n;
int *a=new int[n];
randomize();
for(int i=0;i<n;i++)
{
*(a+i)=rand()%100+1;
}
sort(n,a);//排序由小排到大
for(int i=0;i<n;i++)
{
cout<<*(a+i)<<endl;
}
delete [] a;//假如不加這行,執行程式後,電腦可能會當機
//=====END=====//
system("PAUSE");
return 0;
}
2007-09-21 8:17 am
超有幫助~
多謝你喔
2007-09-21 6:37 am
這裡有篇 rand( ) 的文章,包含不少 rand( ) 的相關問題。
你的問題裡面也有。

對你現在而言,這篇可能難了點!
一但你能讀懂這篇,95% 以上 的 rand( ) 問題應該都難不倒你了!^_^

加油!^_^

http://www.phpbbserver.com/graphicsparalle/viewtopic.php?t=129

2007-09-21 08:03:58 補充:
C 的陣列值是從 0 到 n-1
如:
int a[4],可用的是 a[0] a[1] a[2] 和 a[3] 這四個!
注意:沒有 a[4]!!!

2007-09-21 08:04:41 補充:
你另外錯在 sum 沒給初值!
改成:
int sum = a[0];
for (i=1; i<n; i++) // <=改成 =
sum += a[i];
就好了!

int sum = 0;
for (i=0; i<n; i++)
sum += a[i];
也可以,但較不好

另外,將來在浮點數裡,你可能會遇到加起來答案差太多的問題!
可參
http://www.phpbbserver.com/graphicsparalle/viewtopic.php?t=6


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

檢視 Wayback Machine 備份