[Dart] (로또번호생성) List의 filled()사용 및 Random 번호 생성

Kogoon·2021년 8월 2일
0

Flutter 앱 개발 공부를 진행 중에 Dart 언어 공부 중..
Python은 역시 쉬운 언어였다...

목표

Dart언어를 가지고, List 생성 후, For문을 이용해서 6개의 랜덤 상수 생성 후 저장.

Try 1

// Random 함수 사용을 위한 math
import 'dart:math';

void main() {
  // 상수만 저장할 List
  List<int> nums = [];
  
  // 1부터 45개의 6개의 수
  for( int i = 0; i < 6; i ++) {
  	nums.add(Random().nextInt(45) + 1);
  }
  
  // 출력
  print(nums);
}

결과

[2, 27, 5, 30, 13, 4]

Try 2(다른방법)

  • List의 filled()을 이용한 리스트 초기화 -> 이유?

Problem

  • filled()로 리스트 크기 고정 시, add로 넣는 것이 아닌 값 주기. (?)
    Uncaught Error: Unsupported operation: add
// Random 함수 사용을 위한 math
import 'dart:math';

void main() {
  // 상수만 저장할 List
  List<int> nums = List<int>.filled(6, 0);
  // print(nums); -> [0, 0, 0, 0, 0, 0]
  
  // 1부터 45개의 6개의 수
  for( int i = 0; i < 6; i ++) {
  	nums[i] = Random().nextInt(45) + 1;
  }
  
  print(nums);
}

결과

[38, 30, 24, 23, 30, 41]

중복..

Try3

  • 중복제거 ->
// Random 함수 사용을 위한 math
import 'dart:math';

void main() {
  // 상수만 저장할 List
  List<int> nums = List<int>.filled(6, 0);
  // print(nums); -> [0, 0, 0, 0, 0, 0]
  
  // 1부터 45개의 6개의 수
  for( int i = 0; i < 6; i ++) {
    // temp 변수에 임시로 저장
    int temp = Random().nextInt(45) + 1;
    // while 문을 이용, contains()로 list안에 들어있는 값인지 확인
    while (nums.contains(temp)) {
      temp = Random().nextInt(45) + 1;
    }
    nums[i] = temp;
  }
  
  print(nums);
}

결과

[29, 32, 36, 33, 15, 8]
profile
SE, Cloud, Devops, Python

0개의 댓글