2 개의 다른 시드 목록을 사용하여 두 개의 벡터를 무작위 int (1000 미만)로 채워야하는 프로그램을 작성했습니다. 씨를 사용하려고 할 때 씨앗을 사용하려고하면 아주 이상한 결과가납니다. 나는 그것이 내가 얻을 출력이 인 실행할 때 여기 srand가 제대로 작동하지 않습니다.
도 ... 그러나 ...0 29046 -309340552 29046 32 0 134113 0 0 0
-309339528 29046 64 0 48 0 0 0 986 169
0 0 -309340552 29046 32 0 134113 0 0 0
-309339528 29046 64 0 48 0 0 0 986 169
#include <iostream>
#include <vector>
#include <algorithm>
#include <cstdlib>
#include <ctime>
using namespace std;
void Vectors(vector <int> v1, vector <int> v2, int s1, int s2) {
srand(s1);
for (int i = 0; i < 200; i++) {
v1.push_back(rand() % 1000 + 1);
//v1[i] = rand() % 1000 + 1;
}
srand(s2);
for (int i = 0; i < 100; i++) {
v2.push_back(rand() % 1000 + 1);
//v2[i] = rand() % 1000 + 1;
}
}
void prnt(vector<int> v) {
for (int i = 0; i < 20; i++) {
cout << v[i] << " ";
if (i == 9 || i == 19) {
cout << endl;
}
}
}
int main() {
vector<int> vec1;
vector<int> vec2;
vec1.resize(200);
vec2.resize(100);
Vectors(vec1, vec2, 1, 3);
prnt(vec1);
prnt(vec2);
return 0;
system("pause");
}
지금까지 작성한 코드, 그것은 것입니다 vec1과 2가 어떤 크기로 초기화되지 않으면 Vectors 메서드를 사용할 수 없습니다.
난 그냥 C로 자바에서 전송 한++ 그래서 당신은 저를 제공 할 수있는 도움은 매우는 자바 당신은 벡터에 전달하는
주제를 벗어나지 만, 왜'return 0;'뒤에'system ("pause"); – Amadeus
벡터를 다루는 방법에는 두 가지가 있습니다. 당신은 당신이'v [0] .. v [v.size() - 1]'로 주소를 지정할 수있는 N 개의 항목을 할당하거나,'push_back'을 사용하여 크기를 하나씩 늘릴 수 있습니다 끝에 새 항목을 추가하십시오. 지금하고있는 일은 200 개의 항목을위한 공간을 할당 한 다음 마지막에 200 개의 항목을 추가하는 것입니다. –
때때로 실수는 당신의 생명을 구할 수 있습니다. 'rand()'를 사용하지 말고 현대의 C++ 무작위 생성기로 전환 할 때입니다. – CroCo