조건
rand()가 0~1까지의 수를 무작위로 추출하는 함수라서 0을 포함시키지 않는 것과 중복수를 삭제하는 것이 가장 큰 문제였다. 그래서 1~ 6개의 생성된 정수집합(lotto_temp)과 각각의 값을 비교하여 같은 값을 가지면 그 위치 값을 index에 저장하도록 하였다. 즉 index의 크기가 2 이상이면 중복되는 수를 가지므로 첫 번째 index위치의 값을 난수를 발생시켜 재생성한다. 과정부터 다시 i=1로 설정하여 다시 반복한다.
%-- code start lotto.m file
%-- LOTTO 46 by wside98
%-- 0과 1사이의 난수를 temp에 저장하고, lotto_temp에 1~46사이의 값 6개를 저장한다.
temp = rand(6,1);
upp = 46;
low = 1;
lotto_temp = round((upp-low)*temp + low);
i=1;
%-- 중복되는 값을 비교하여, 재 생성한다.
while i <= length(lotto_temp)
index = find(lotto_temp == lotto_temp(i));
if length(index) >= 2
lotto_temp(index(1)) = round((upp-low)*rand(1) + low);
i = 1;
else
i = i+1;
end
end
Nlotto = lotto_temp;
fprintf('----good luck----\n');
fprintf(' %d %d %d %d %d %d \n',Nlotto(1),Nlotto(2),Nlotto(3),Nlotto(4),Nlotto(5),Nlotto(6));
fprintf('-----------------\n\n');
%-- code end
결과 출력
더 많은 매트랩 글을 보고 싶으시다면?
2022.12.17 - [메트랩] - [매트랩] 2차원 평면상의 점의 좌표와 대칭을 위한 기준점의 좌표를 배열 형태로 입력받고 대칭점을 구하여 좌표를 출력하는 프로그램을 작성하시오
2022.12.17 - [메트랩] - [매트랩] 10개의 정수 값을 하나의 배열로 입력받아 홀수 번째에 있는 원소들의 합을 내장함수를 이용하여 출력하시오
2022.12.17 - [메트랩] - [매트랩] 임의의 크기를 갖는 이차원행렬 원소의 최대값, 최소값을 교환하여 출력하는 프로그램을 작성하시오
2022.12.17 - [메트랩] - [매트랩] 이차함수에서 이차항의 계수, 일차항의 계수, 상수항의 계수를 입력받아 꼭지점의 좌표를 출력하시오
'메트랩' 카테고리의 다른 글
[매트랩] 삼각형의 세 꼭지점 좌표를 받아 삼각형의 무게 중심을 구하시오 (0) | 2022.12.17 |
---|---|
[매트랩] 이차함수에서 이차항의 계수, 일차항의 계수, 상수항의 계수를 입력받아 꼭지점의 좌표를 출력하시오 (0) | 2022.12.17 |
[매트랩] 임의의 크기를 갖는 이차원행렬 원소의 최대값, 최소값을 교환하여 출력하는 프로그램을 작성하시오 (0) | 2022.12.17 |
[매트랩] 10개의 정수 값을 하나의 배열로 입력받아 홀수 번째에 있는 원소들의 합을 내장함수를 이용하여 출력하시오 (0) | 2022.12.17 |
[매트랩] 10개의 정수값을 하나의 배열로 입력받아 sort()내장함수를 이용하여 오름차순으로 정렬한 후 중앙값을 출력하는 프로그램을 작성하시오 (0) | 2022.12.17 |
댓글