본문 바로가기
메트랩

[매트랩] 로또번호 생성기 난수 활용

by 이얏호이야호 2022. 11. 26.

조건

 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 - [분류 전체보기] - 매트랩

2022.12.17 - [메트랩] - [매트랩] 2차원 평면상의 점의 좌표와 대칭을 위한 기준점의 좌표를 배열 형태로 입력받고 대칭점을 구하여 좌표를 출력하는 프로그램을 작성하시오

2022.12.17 - [메트랩] - [매트랩] 10개의 정수값을 하나의 배열로 입력받아 sort()내장함수를 이용하여 오름차순으로 정렬한 후 중앙값을 출력하는 프로그램을 작성하시오

2022.12.17 - [메트랩] - [매트랩] 10개의 정수 값을 하나의 배열로 입력받아 홀수 번째에 있는 원소들의 합을 내장함수를 이용하여 출력하시오

2022.12.17 - [메트랩] - [매트랩] 임의의 크기를 갖는 이차원행렬 원소의 최대값, 최소값을 교환하여 출력하는 프로그램을 작성하시오

2022.12.17 - [메트랩] - [매트랩] 이차함수에서 이차항의 계수, 일차항의 계수, 상수항의 계수를 입력받아 꼭지점의 좌표를 출력하시오

댓글