티스토리 뷰

matlab

로또 프로그램

게으른 the lazy 2020. 6. 15. 01:53

 

로또 프로그램을 짜봤습니다. 6개 숫자를 입력으로 넣으면 난수 6개를 생성해서 몇개나 맞췄는지 출력해줍니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
function n = lotto(mypick)
mypick = sort(mypick);
if sum(diff(mypick)==0)>0
    warning('너는 첫판부터 장난질이냐?')
    n = -1;
    return
end
theirpick = sort(randperm(45,6));
 
fprintf('Your picks are: ');
fprintf('%d\t', mypick);
fprintf(newline)
fprintf('They picked as: ');
fprintf('%d\t',theirpick);
fprintf(newline)
 
m = sort([mypick, theirpick]);
n = sum(diff(m)==0);
if n>=3
    fprintf('Congratulations! You''ve matched %d numbers!',n);
    fprintf(newline)
else
    fprintf('Aw~ too bad. Better luck next time~!!');
    fprintf(newline)
end
cs

 

포인트는 두 벡터에서 같은 숫자가 몇개인지를 찾는 부분인데요. (17-18번줄) 각 벡터에는 중복되는 숫자가 없다는 보장이 이미 있으므로, 두 벡터를 합쳐 sort 한 후 diff가 0인 개수가 결국 두 벡터의 같은 숫자 개수가 됩니다. 아래의 예를 보면 무슨 말인지 이해가 될 겁니다.

 

 

테스트로 돌려봤는데... 3개 맞추기가 참 어렵군요. 로또는 아주 심심할 때만 심심풀이로 합시다.

 

- 게으른 맽랩

댓글