원래 난수 발생 알고리즘은 random인 듯 보이지만 실은 그렇지 않은 pseudo-random number의 수열을 발생시키는 점화식을 사용합니다. 각 rand() 함수 구현마다 방식은 다르지만, 첫 번째 seed가 같으면 그 뒤에 따라 나오는 난수열이 동일함은 거의 모든 알고리즘이 공통으로 갖는 특성입니다. 그러니 카드 배열 알고리즘이 deterministic이라면 모든 카드 배열은 seed에 의해 deterministic으로 정해지는 셈이죠.

살짝 주제에서 벗어나는 이야기지만, 얼마나 임의적으로 보이는 pseudo-random number를 생성할 수 있겠느냐도 오랜 연구 주제 중 하나였습니다. TAOCP Vol.2에서도 이 내용을 간략하게 다룹니다.

사실 컴퓨터에서 랜덤이란 개념이 없죠.
그래서 보통 사람의 행동을 ms단위로 측정해 이걸 랜덤 seed로 사용하죠.

저는 난수가 현재 시간 timestamp를 사용하는 것으로 알고 있었는데 잘못 알고 있었네요 ㅎㅎ 공유 감사합니다.

초기화 할 때 seed로 시간을 많이들 쓰긴 하지요. 시간은 계속 바뀌니까요.