여덟 개 객체의 가방에서 무작위로 선택하는 프로그램을 작성하십시오.
각 개체는 빨간색, 파란색, 주황색 또는 녹색 일 수 있으며 볼 또는 큐브 일 수 있습니다.
가방에 각 조합에 대해 하나의 개체 (빨간색 공 1 개,
빨간색 큐브 1 개, 주황색 공 1 개, 주황색 큐브 1 개 등)가 있다고 가정합니다.
Example 5.3과 같이 두 개의 문자열 배열을 사용하여 코드를 작성하십시오. 하나는 색상을 식별하고 다른 하나는
모양을 식별하는 데 사용됩니다.C++ 반복하지 않고 무작위로 항목 수 선택
나는 위의 운동을 수행하는 프로그램을 작성하려고합니다. 문제는 매번 동일한 객체를 두 번 이상 선택할 수 있다는 것입니다.
이
는 지금까지#include "stdafx.h"
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <cmath>
using namespace std;
int rand_0toN1(int n);
void choose_object();
char *colour[4] =
{"Red", "Blue", "Orange", "Green"};
char *object[2] =
{"Ball", "Cube"};
int main()
{
int n, i;
srand(time(NULL)); // Set seed for randomizing.
while (1) {
cout << "Enter no. of objects to draw ";
cout << "(0 to exit): ";
cin >> n;
if (n == 0)
break;
for (i = 1; i <= n; i++)
choose_object();
}
return 0;
}
void choose_object() {
int c; // Random index (0 thru 4) into
// colours array
int o; // Random index (0 thru 2) into
// object array
c = rand_0toN1(4);
o = rand_0toN1(2);
cout << colour[c] << "," << object[o] << endl;
}
int rand_0toN1(int n) {
return rand() % n;
}
표준 절차는, 그들 셔플, 가능성의 목록을 생성 한 후 (셔플) 순서로 사람들을 반환하는 것입니다 : 당신은
while()
루프에서 같은 것을 그것을 할 수 있습니다. –@MooingDuck 그건 내가 본 이런 종류의 표준이 아니야. 5 가지 옵션으로 10 가지 기준을 상상해보십시오 - 소수의 항목을 찾기 위해 거의 천만 가지 항목을 생성하고 싶습니까? : - \ – corsiKa
@ 글로우 코더 : 대부분의 셔플은 거의 두어 이상이 없으며 다른 방법은 본 적이 없습니다. 분명히 잘 확장되지 않으며 많은 수의 경우 비표준 셔플 링 절차가 필요합니다. 너 뭐 봤어? –