본문으로 건너뛰기

randLocation

실제 위치를 만들어 count개만큼 문자열로 돌려줍니다. 나라부터 지정한 단계까지를 그 언어가 주소를 쓰는 방식대로 이어 씁니다. 모든 행정구역은 그 나라가 직접 공개한 것이고, 나란히 적힌 상위 구역 안에 실제로 있습니다. output: 'detail'을 주면 단계마다 따로 알려 줍니다.

한국의 읍·면·동, 미국의 도시보다 아래로는 내려가지 않습니다. 도로명도 건물도 번지도 없으니, 결과는 장소일 뿐 누군가의 주소가 되지 않습니다.

javascript
import { randLocation } from 'randino';

randLocation();
// ['Tull, Arkansas, United States']
dart
import 'package:randino/randino.dart';

randLocation();
// [Tull, Arkansas, United States]
python
from randino import rand_location

rand_location()
# ['Tull, Arkansas, United States']

옵션

모든 옵션은 선택 사항이며, 기본값은 위의 인자 없는 호출이 사용하는 값입니다.

옵션타입기본값설명
languageLocationLanguageOptionLocationLanguage?LocationLanguageOption'all'null"all"어느 언어로, 곧 어느 나라의 위치를 쓸지. 생략하면 결과마다 하나씩 골라 섞습니다.
levelLocationLevelLocationLevelLocationLevel'district'LocationLevel.district"district"어느 단계까지 쓸지. 그 단계가 없는 나라는 가진 단계 중 가장 낮은 곳에서 멈춥니다.
includeCountryincludeCountryinclude_countrybooleanboolbooltruetrueTrue위치 맨 앞에 나라 이름을 쓸지. 언어를 정했다면 끄는 편이 깔끔하며, 상세 출력의 country는 그대로 남습니다.
countnumberintint1돌려줄 결과 개수. 0 … 10000으로 제한됩니다.
minLengthminLengthmin_lengthnumberint?int | None제한 없음최소 글자 수. 결과 문자열 전체의 길이입니다.
maxLengthmaxLengthmax_lengthnumberint?int | None제한 없음최대 글자 수. 맞는 곳이 없으면 가장 가까운 길이의 위치로 답합니다.
startsWithstartsWithstarts_withstringString?strnull""이 글자로 시작하는 결과만 남깁니다.
uniquebooleanboolboolfalsefalseFalse같은 결과를 두 번 돌려주지 않습니다. 목록이 바닥나면 요청보다 적게 돌아옵니다.
random() => numberRandom?Callable[[], float] | NonenullNone무작위성을 어디서 가져올지. 기본값은 각 언어의 일반 난수 생성기입니다.
outputRandOutputRandOutput'value'"value"문자열, 또는 결과마다 LocationDetail 하나.

levelincludeCountry를 뺀 같은 표가 아래 네 단계 함수에도 들어 있습니다. realism은 없습니다. 위치는 실제 장소이거나 위치가 아니거나 둘 중 하나라서, 지어낼 것이 없습니다.

Dart에는 output이 없습니다. 거기서는 상세 출력randLocationDetails입니다.

언어와 나라

언어마다 그 나라의 장소를, 그 나라가 주소를 쓰는 순서대로 씁니다. 한국어는 나라부터 내려가고, 영어는 도시부터 올라갑니다.

코드나라단계
ko대한민국시·도 → 시·군·구 → 읍·면·동
enUnited States주 → 도시
javascript
randLocation({ language: 'ko', count: 3 });
// ['대한민국 경기도 양평군 단월면', '대한민국 충청남도 공주시 월송동', '대한민국 충청북도 청주시 서원구 미평동']

randLocation({ language: 'en', count: 3 });
// ['Diamond Springs, California, United States', 'Gig Harbor, Washington, United States', 'Pisgah, Alabama, United States']
dart
randLocation(language: LocationLanguage.ko, count: 3);
// [대한민국 경기도 양평군 단월면, 대한민국 충청남도 공주시 월송동, 대한민국 충청북도 청주시 서원구 미평동]
python
rand_location(language="ko", count=3)
# ['대한민국 경기도 양평군 단월면', '대한민국 충청남도 공주시 월송동', '대한민국 충청북도 청주시 서원구 미평동']

패키지가 지원하는 나머지 일곱 언어에는 국가 아래 단계의 위치가 없습니다. 다만 randCountry는 9개 언어 모두로 모든 국가 이름을 씁니다. 행정구역은 조건 없이 공개하는 나라만 넣기 때문입니다. 이 패키지를 쓰는 사람이 출처 표기를 떠안지 않아야 하고, 목록에 분쟁 지역이 없어야 합니다. 지금은 이 두 나라만 그렇습니다. 지원 여부는 지원 언어에 정리해 두었습니다.

어디까지 쓸지

level은 위치가 멈추는 단계입니다. country, region, city, district 중 하나이고 기본값은 district입니다. 그 단계가 없는 나라는 가진 단계 중 가장 낮은 곳에서 멈추므로, 영어 위치는 도시보다 길어지지 않습니다.

javascript
randLocation({ language: 'ko', level: 'city', count: 2 });
// ['대한민국 대전광역시 대덕구', '대한민국 서울특별시 서대문구']

randLocation({ language: 'en', level: 'region', count: 2 });
// ['Maryland, United States', 'Michigan, United States']
dart
randLocation(language: LocationLanguage.ko, level: LocationLevel.city, count: 2);
// [대한민국 대전광역시 대덕구, 대한민국 서울특별시 서대문구]
python
rand_location(language="ko", level="city", count=2)
# ['대한민국 대전광역시 대덕구', '대한민국 서울특별시 서대문구']

어떤 단계에 구역이 없는 곳은 그 위에서 멈춥니다. 세종특별자치시에는 시·군·구가 없어서 level: 'city'에서는 대한민국 세종특별자치시로 나오고, district에서는 읍·면·동이 시 이름 바로 뒤에 붙습니다.

멈추는 단계의 구역은 모두 같은 확률로 뽑힙니다. 한국 위치라면 인구와 상관없이 약 5천 개 읍·면·동 가운데 하나를 고르게 고릅니다.

나라 이름 빼기

위치는 나라 이름으로 시작합니다. language를 섞을 때는 의미가 있지만, 언어를 정하면 매번 같은 이름일 뿐입니다. includeCountry: falseincludeCountry: falseinclude_country=False를 주면 문자열에서 나라 이름을 뺍니다. 상세 출력의 country는 그대로 남습니다.

javascript
randLocation({ language: 'ko', includeCountry: false, count: 2 });
// ['경기도 양평군 단월면', '충청남도 공주시 월송동']

randLocation({ language: 'en', includeCountry: false, count: 2 });
// ['Diamond Springs, California', 'Gig Harbor, Washington']
dart
randLocation(language: LocationLanguage.ko, includeCountry: false, count: 2);
// [경기도 양평군 단월면, 충청남도 공주시 월송동]
python
rand_location(language="ko", include_country=False, count=2)
# ['경기도 양평군 단월면', '충청남도 공주시 월송동']

level: 'country'인 위치는 나라 이름 자체이므로, 이 옵션과 상관없이 나라 이름을 씁니다.

길이와 첫 글자

minLengthminLengthmin_lengthmaxLengthmaxLengthmax_length는 나라 이름과 구분자까지 포함한 문자열 전체의 길이를 재며, 최대 RAND_LOCATION_LENGTH_MAXrandLocationLengthMaxRAND_LOCATION_LENGTH_MAX(100)까지입니다. 맞는 위치가 없으면 빈 결과 대신 가장 가까운 길이의 위치로 답합니다.startsWithstartsWithstarts_with는 문자열의 첫 글자와 비교합니다. 한국어 위치는 나라 이름의 로 시작하지만, includeCountry: falseincludeCountry: falseinclude_country=False로 나라 이름을 빼면 startsWith: '서'로 서울특별시에서만 뽑을 수 있습니다. 길이 옵션도 나라 이름이 있든 없든 실제로 쓰인 문자열을 잽니다.
javascript
randLocation({ language: 'ko', maxLength: 14, count: 3 });
// ['대한민국 경기도 광주시 역동', '대한민국 경기도 시흥시 포동', '대한민국 경기도 광주시 삼동']

randLocation({ language: 'en', startsWith: 'S', count: 2 });
// ['Sun City, Kansas, United States', 'Smithton, Pennsylvania, United States']
dart
randLocation(language: LocationLanguage.ko, maxLength: 14, count: 3);
// [대한민국 경기도 광주시 역동, 대한민국 경기도 시흥시 포동, 대한민국 경기도 광주시 삼동]
python
rand_location(language="ko", max_length=14, count=3)
# ['대한민국 경기도 광주시 역동', '대한민국 경기도 시흥시 포동', '대한민국 경기도 광주시 삼동']

단계마다 함수가 하나씩

단계마다 함수가 따로 있고, 위치 전체가 아니라 이름 하나만 돌려줍니다. 그중 randCountry만은 그 언어의 나라를 넘어, 전 세계 249개 국가와 지역의 이름을 모든 단어 언어로 씁니다.

randCountry · randRegion · randCity · randDistrict

상세 출력

javascript
randLocation({ language: 'ko', output: 'detail' });
// [{ location: '대한민국 전남광주통합특별시 서구 양동', language: 'ko', level: 'district',
//    country: '대한민국', region: '전남광주통합특별시', city: '서구', district: '양동' }]
dart
final detail = randLocationDetails(language: LocationLanguage.ko).first;

detail.city; // 서구

Dart에는 오버로드도 유니언 타입도 없어서, 상세 출력은 별도 함수입니다.

python
rand_location(language="ko", output="detail")
# [LocationDetail(location='대한민국 전남광주통합특별시 서구 양동', language='ko', level='district',
#                 country='대한민국', region='전남광주통합특별시', city='서구', district='양동')]

level은 결과가 닿은 가장 낮은 단계입니다. 영어 위치는 모두 city이고, level: 'city'로 뽑은 세종특별자치시는 region입니다. 결과에 없는 단계는 null이라서, 세종특별자치시의 city는 언제나 null입니다.

데이터 출처

코드공개 기관기준
ko국토교통부, 전국 법정동 (공공데이터포털 15063424), 이용허락범위 제한 없음2026-07-29
enU.S. Census Bureau, 2026 Gazetteer places, 미국 연방정부 저작물2026

위치 맨 앞의 나라 이름은 randCountry와 같은 표에서 가져옵니다. 목록은 tz 데이터베이스에 실린 ISO 3166-1(퍼블릭 도메인)이고, 이름은 Wikidata(CC0)입니다.

한국의 읍·면·동은 주민센터가 맡는 행정동이 아니라 주소에 쓰는 법정동입니다. 일반구가 있는 시는 구와 함께 씁니다(수원시 장안구). 미국의 도시는 50개 주와 워싱턴 D.C.에 있는 모든 법인 도시와 인구조사 지정 지역(CDP)이며, 법적 명칭 표기를 뗀 이름으로 씁니다(Pasadena city가 아니라 Pasadena). 푸에르토리코와 그 밖의 속령은 주가 아니므로 넣지 않았습니다.

행정구역은 바뀝니다. 2026년 7월 1일에는 광주광역시와 전라남도가 전남광주통합특별시가 됐습니다. 각 릴리스에는 빌드한 시점의 목록이 들어 있습니다.

함께 보기

  • randCity — 위치 전체 대신 구역 이름 하나.
  • 지원 언어 — 위치를 지원하는 언어와, 나머지를 지원하지 않는 이유.
  • 상수LOCATION_LANGUAGES, LOCATION_LEVELS, 길이 상한.

Released under the MIT License