作者supercygnus (......)
看板C_and_CPP
標題[問題] 取亂取存到陣列
時間Mon Mar 4 21:19:31 2013
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
DEV C++
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
問題(Question):
我的程式是要取20個 10~50 之間不重複的整數存到陣列存放
餵入的資料(Input):
預期的正確結果(Expected Output):
錯誤結果(Wrong Output):
程式進入無窮迴圈,無結果
程式碼(Code):(請善用置底文網頁, 記得排版)
#include<iostream>
#include<time.h>
using namespace std;
int RND(int,int);
float random();
int main(){
int temp,count=0;
int result[20];
bool flag;
for(int i=0;i<20;i++)
result[i]=0;
srand(time(0));
while(count<20){
flag=false;
temp=RND(10,50);
for(int i=0;i<count;i++){
if(temp==result[i])
flag=true;
}
if(flag==true)
continue;
result[count]=temp;
count++;
}
system("pause");
return 0;
}
float random(){
float d=rand()%10;
d=d/10;
return d;
}
int RND(int m,int n){
int r=(int)(m+(n-m)*random()+0.5);
return r;
}
補充說明(Supplement):
請問到底哪裏出錯,感覺沒錯0.0
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 111.252.241.88
→ linotwo:呼叫 random() 得到的浮點數只有十種可能。 03/04 21:47
→ linotwo:要填滿 20 個欄位,其中一定會有重複。 03/04 21:47
→ roiafafa:補充一下,因為你的r=(int)(m+(n-m)*random()+0.5)這行 03/05 09:47
→ roiafafa:傳入的m和n從來沒有改變過,所以亂數取的10個值 03/05 09:47
→ roiafafa:都是加上和乘上同一個變量,有取亂數地方 03/05 09:51
→ roiafafa:只有那10個從random出來的數 03/05 09:51
推 LPH66:樓上提的基本上只是小事 重點在於你的 random() 只會給出 03/05 11:32
→ LPH66:一位小數的亂數 這即是一樓說的"十種可能"的意思 03/05 11:32
推 jimmycool:推薦板上的 #17SH4XHv 第一次使用亂數就上手 03/05 14:07