[問題] 亂數產生座標
想用亂數取得不重複的N組(x,y)座標,
可是有時候還是會出現重複的組合
想請問板上的各位,下面的程式碼哪裡有問題呢?
謝謝
#include <iostream>
#include <cstdlib>
#include <ctime>
#define n 20 //N個點
using namespace std;
void finddata();
int main()
{
int i,j,x[n],y[n],g[n],h[n],k,m;
srand(time(NULL));
finddata();
system("pause");
return 0;
}
void finddata()
{
int i,j,x[n],y[n],g[n],h[n],k,m;
cout<<"-------------檢查前---------------\n"; //產生N點xy座標
for(i=0;i<n;i++)
{
x[i]=rand()%5;
y[i]=rand()%5;
g[i]=x[i];
h[i]=y[i];
cout<<x[i]<<","<<y[i]<<"\t";
}
cout<<"\n-------------檢查後---------------\n";//確認產生的N點沒有重複的XY
組合
for(i=1;i<n;i++)
{
for(j=0;j<i;j++)
{
while((x[i]==g[j])&&(y[i]==h[j]))
{
x[i]=rand()%5;
y[i]=rand()%5;
}
}
}
for(i=0;i<n;i++)
{
cout<<x[i]<<","<<y[i]<<"\t";
}
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.138.246.84
→
05/18 13:08, , 1F
05/18 13:08, 1F
→
05/18 13:09, , 2F
05/18 13:09, 2F
謝謝J大
組合數目N 是要讓使用者自行輸入的,現在先定義為20 還有RAND()%5
都是我想先測試看看跑出來的結果有沒有重複,檢測程式碼有沒有問題XD
只是目前這樣會有問題發生,所以.....OTZ
※ 編輯: sanabear 來自: 140.138.246.84 (05/18 13:20)
→
05/18 13:22, , 3F
05/18 13:22, 3F
→
05/18 13:23, , 4F
05/18 13:23, 4F
→
05/18 14:25, , 5F
05/18 14:25, 5F
→
05/18 14:26, , 6F
05/18 14:26, 6F
→
05/18 14:28, , 7F
05/18 14:28, 7F
→
05/18 14:50, , 8F
05/18 14:50, 8F
討論串 (同標題文章)