본문 바로가기

Python

Faker seed를 사용해봤습니다

Faker.seed(0)는 같은 데이터 셋을 편리하게 세팅하게 해주는 메소드다.

정확히는 라이브러리 전체에서 생성되는 난수 시퀀스에 영향을 주는 난수 생성기를 시드하는데 사용된다.

시드 값을 설정하면 생성된 난수 시퀀스가 프로그램의 여러 실행에서 동일하게 유지된다.

정말 그런지 비교해보자.

프로그램을 종료하고 다시 실행해서 같은 seed번호를 설정하면 같은 난수 시퀀스가 설정된다.

예를 들어 seed(0)을 하고 fake.name을 for문으로 5번 반복해서 리스트를 만들고

프로그램을 종료하고 다시 시작해서 같은 방식으로 생성하면 같은 결과가 나온다.

seed(0)에서 생성된 fake.name은

항상 ['Norma Fisher', 'Jorge Sullivan', 'Elizabeth Woods', 'Susan Wagner', 'Peter Montgomery'…] 순이 된다.

비교방법 설계

난수 시퀀스를 테스트 하려면,

  1. Faker.seed(0)을 호출하고

  2. 이름의 리스트를 만들고 name_seed0_1 변수에 할당.

  3. Faker.seed(1)을 호출하고

  4. 이름의 리스트를 만들고 name_seed1_1 변수에 할당.

  5. 1,2번을 반복해서 새로운 변수 name_seed0_2에 할당.

  6. 3,4번을 반복해서 새로운 변수name_seed1_2에 할당.

  7. 2, 5번에서 생성된 변수를 비교, 4, 6번에서 생성된 변수를 비교


from faker import Faker

# seed를 설정
Faker.seed(0)
fake = Faker()

name_seed0_1 = [fake.name() for i in range(5)]

Faker.seed(1)
name_seed1_1 = [fake.name() for i in range(5)]

Faker.seed(0)
name_seed0_2 = [fake.name() for i in range(5)]

Faker.seed(1)
name_seed1_2 = [fake.name() for i in range(5)]

print(name_seed0_1 == name_seed0_2)
print(name_seed1_1 == name_seed1_2)
print(name_seed0_1)
print(name_seed1_1)


# True
# True
# ['Norma Fisher', 'Jorge Sullivan', 'Elizabeth Woods', 'Susan Wagner', 'Peter Montgomery']
# ['Ryan Gallagher', 'Jon Cole', 'Rachel Davis', 'Russell Reynolds', 'April Griffin']


>>> from faker import Faker
>>> Faker.seed(0)
>>> fake = Faker()
>>> name_seed0_1 = [fake.name() for i in range(5)]
>>> print(name_seed0_1)
['Norma Fisher', 'Jorge Sullivan', 'Elizabeth Woods', 'Susan Wagner', 'Peter Montgomery']