본문 바로가기

Coding Memo

검색하기
Coding Memo
프로필사진 minttea25

  • 분류 전체보기 (163)
    • Language (78)
      • C++ (37)
      • C# (18)
      • Kotlin (20)
      • Python (3)
    • Unreal Engine (1)
    • Android (2)
    • Unity (8)
    • 문제풀이 (12)
      • BOJ (11)
      • Code Forces (1)
    • Game Server (C++) (18)
    • 메모 (12)
    • Icons (1)
    • etc (29)
Guestbook
Notice
Recent Posts
Recent Comments
Link
Tags
  • tcp
  • C++
  • protobuf
  • c#
  • MariaDB
  • 메모리
  • Socket Programming
  • 데이터베이스
  • aws
  • 디자인패턴
  • 에러
  • db
  • OVERLAPPED
  • error
  • Lock
  • winsock
  • 유니티
  • 직렬화
  • template
  • serialization
  • 백준
  • Visual Studio
  • Unity
  • Singleton
  • SOCKET
  • database
  • Java
  • Server
  • RDS
  • 디자인 패턴
more
Archives
Today
Total
관리 메뉴
  • 글쓰기
  • 방명록
  • RSS
  • 관리

목록Algorithm (1)

Coding Memo

Shuffle 알고리즘 (Fisher-Yates Shuffle, Knuth Shuffle)

Fisher-Yates Shuffle (피셔 예이스 셔플) 알고리즘은 랜덤 값을 이용해, 배열을 uniform하게 섞을 수 있는 알고리즘이다. 한번 순환 (1 iterator)로 셔플을 완성할 수 있다. 매우 간단하다. 랜덤하게 숫자 하나를 뽑고 그 값을 인덱스로 치환한다음 그 값과 현재 값을 swap한다.// Fisher-Yates Shuffle Algorithmvoid Shuffle(std::vector& arr){ int n = arr.size(); for (int i = n - 1; i > 0; i--) { int j = rand() % (i + 1); swap(arr[i], arr[j]); }} 하나 주의할 점은 랜덤 값을 얻는 함수로 rand()를 사용했기 때문에 시드를 설정 해줘야 한..

etc 2024. 9. 26. 15:06
이전 Prev 1 Next 다음

Blog is powered by kakao / Designed by Tistory

티스토리툴바