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
'Develop > Flutter' 카테고리의 다른 글
[Flutter] M1 Mac 에서 pod error. 주로 firebase 관련 해결법 (0) | 2021.09.19 |
---|---|
[Flutter] 플러터 groupBy. 날짜별로 데이터를 정리하자! (0) | 2021.07.27 |
[Flutter] 플러터 시작하기. - m1 Mac에서 Flutter Project 생성 꿀 팁 (0) | 2021.07.27 |