1~11까지의 숫자를 가지는 카드 11장을 만들고 그중에 두장을 뽑아서 A와 B에게 준 후
다시 A와 B에게 한장씩 더 줍니다
그리고 A가 가진 카드의 숫자를 더하고 B가 가진 카드의 숫자를 더하는건데...
배열가지고 어찌어찌 하는거같은데 잘 안되네요
구체적으로 완성된 소스코드까지는 무리라고 해도 대략적인 틀 정도는 알고싶습니다
아 그리고 카드는 중복가능합니다 (A가 '11'두장 B가 '11'두장 가질수도 있다는 소리)
하지만.. 여기에서 단순히 rand() 함수를 쓰면 프로그램 실행시킬때 똑같은 패턴으로 나오게 됩니다. srand()를 쓰시면 해결될 겁니다.
2005.03.21 16:27:40 (*.53.177.66)
민스
srand와 rand의 차이는 무엇인가요?
2005.03.22 15:35:26 (*.152.46.71)
파라킹
srand(값)을 넣어주면 그 값에 해당하는 초기값이 설정이 되고 그 값에의해 rand() 할때마다 일정 수식으로 값이 나오게 됩니다.
(srand(0) 처음값 38 srand(1), 처음값 41.. 로 srand 안에 넣어주는 수가 1증가할때마다 처음 rand() 호출했을때의 값이 약 3.3 정도씩 증가하게 됩니다. 이 후는 수식에 의해 적용)
보통 쓰는 방법은 srand(time(NULL)); 을 선언해주고 rand()를 호출해서 값을 받아서 쓰면 됩니다.
time(NULL)은 현재시간을 초로 나타낸것으로 값은 계속 변합니다. 그렇기에 실행하는 현재시간에 따라 다른 난수를 발생시키는 것이죠.
-- 자세한 쓰임방법 --
#include <time.h> <- 헤더파일
srand(time(NULL)); <= 한번만 설정해주면 됩니다. 다시 설정하게 되면 현재시간으로 리셋된 상태로 갑니다.
rand()%값의범위; <= %: 나머지 연산자로 1~100까지의 난수를 원한다면.. rand()%100+1; 이렇게 해주면됩니다. 나머지가 0일때를 고려하는것이죠 ^^;
------------------------ 그럼 좋은하루 되시길..
int cardA2 = (int)(10 * (float)rand()/(float)RAND_MAX) + 1;
int cardB1 = (int)(10 * (float)rand()/(float)RAND_MAX) + 1;
int cardB2 = (int)(10 * (float)rand()/(float)RAND_MAX) + 1;
int a = cardA1 + cardA2;
int b = cardB1 + cardB2;