Develop/Flutter

[Flutter] 플러터로 로또번호 생성 하는 방법

srcho 2021. 7. 29. 11:02
var rnd = Random().nextInt(45) + 1;

플러터로 로또번호를 생성하는 방법에 대해 궁금해 하시는 분이 많아 이렇게 포스팅을 해봅니다.

 

dart에서 제공해주는 math 클래스를 import 해주고 Random() 함수를 사용할 겁니다.

import 'dart:math';

 

그 다음 랜덤으로 int를 리턴해 주도록 변수 rnd를 선언 합니다.

var rnd = Random().nextInt(45);

해당 함수는 0~44까지의 범위중에서 랜덤으로 숫자를 반환합니다. 로또 번호는 1~45이므로 +1을 해주면 되겠죠.

var rnd = Random().nextInt(45)+1;

다음으로 6개의 번호를 중복없이 뽑아 리스트에 담을겁니다.

먼저 리스트를 선언해줍니다.

List<int> lottoSet = [];

중복을 없애는 방법은 여러가지가 있습니다. 다만 이 포스팅에서는 아직 다트에 익숙하지 않은 분들을 위해 직관적인 방법으로 설명합니다.

while (true) {
  // 랜덤으로 번호를 생성해준다.
  var rnd = Random().nextInt(45) + 1;
  
  // 만약 리스트에 생성된 번호가 없다면
  if (!lottoSet.contains(rnd)) {
  	// 리스트에 추가해준다.
  	lottoSet.add(rnd);
  }
  
  // 리스트의 길이가 6이면 while문을 종료한다.
  if (lottoSet.length == 6) break;
}

추가로 위 lottoSet.length == 7 로 바꾸면 보너스번호까지 7개가 출력된다.

 

이를 '생성' 이라는 버튼에 추가하면,

ElevatedButton(
  onPressed: () {
  	// 기존 리스트를 초기화 해주고
    lottoSet.clear();
      // 번호생성
      while (true) {
        var rnd = Random().nextInt(45) + 1;
          if (!lottoSet.contains(rnd)) {
          	lottoSet.add(rnd);
          }
          if (lottoSet.length == 6) break;
        }
        
        // 리스트 정렬
        lottoSet.sort();
        print('${lottoSet.toString()}');
    setState(() {});
  },
  child: Text('생성')
)

 

print()문을 실행해 보면 다음과 같이 잘 출력된다!.

flutter: [1, 6, 7, 10, 21, 26]
flutter: [17, 23, 40, 41, 42, 45]
flutter: [12, 20, 22, 38, 39, 42]
flutter: [13, 23, 27, 28, 35, 40]
flutter: [7, 10, 25, 38, 40, 43]
flutter: [7, 23, 29, 30, 33, 36]
flutter: [9, 15, 22, 23, 30, 43]

 

끝으로 제가 유튜브를 시작했습니다! 스타트업 CEO로 새출발 했어요 ㅎㅎ 포스팅이 도움되셨다면 저의 일상도 봐주세요~ 

저의 개인 유튜브 주소입니다.

https://www.youtube.com/channel/UC6XrfhPWgHzfV3s4YkQg6rA

 

조쎄오 choCEO - YouTube

 

www.youtube.com