워크시트의 모든 작업에 대해 Excel RANDBETWEEN 숫자가 변경되는 이유는 무엇입니까?

워크시트의 모든 작업에 대해 Excel RANDBETWEEN 숫자가 변경되는 이유는 무엇입니까?

Microsoft Excel의 RANDBETWEEN 함수를 사용해야 하는데 워크시트에서 다른 작업을 수행할 때마다 새로운 난수 집합이 생성된다는 것을 알고 있습니다. 또한 a와 b 사이에 n개의 난수 목록을 정렬하기 위해 생성된 난수 집합을 "고정"하는 해결 방법도 알고 있습니다. 내 질문은 이것입니다. 생성된 난수는 왜 변경됩니까? 알고리즘에 이것이 필요한 것이 있습니까? FWIW, Google Sheets, LibreOffice Calc, Apple Numbers는 모두 동일한 동작을 나타냅니다.

답변1

Charles Williams는 Excel이 계산하는 방법과 그 이유에 대해 잘 설명합니다.

http://www.decisionmodels.com/calcsecretsi.htm

본질적으로 통합 문서에 휘발성 함수가 포함된 경우(휘발성 함수가 Excel 버전에 따라 수년에 걸쳐 변경되었으므로 Charles의 목록 참조) 통합 문서의 셀이 변경되면 전체 통합 문서 재계산이 트리거됩니다(Excel의 경우 자동계산으로 설정되어 있습니다.) 통합 문서에 일시적인 함수가 없으면 마지막 변경 사항의 영향을 받은 셀만 다시 계산됩니다.

여기에 있는 다른 사람들은 셀이 변경되면 자동 계산이 항상 통합 문서의 모든 것을 계산한다고 말했지만 이는 잘못된 것입니다. 휘발성 함수만 통합 문서의 모든 셀을 자동으로 다시 계산합니다. 휘발성 함수가 없으면 Excel은 다시 계산해야 하는 항목만 다시 계산합니다.

그렇기 때문에 차이점을 아는 나와 같은 사람들은 가능하면 워크시트 셀에서 OFFSET() 또는 INDIRECT()와 같은 휘발성 함수를 피하도록 강력히 권고합니다. 유청은 셀이 변경될 때마다 전체 재계산을 유발하여 통합 문서의 속도를 늦추기 때문입니다. OFFSET() 대신 INDEX()를 사용하는 방법을 배우면 Index가 휘발성이 아니기 때문에 속도가 크게 향상될 수 있습니다(자세한 내용은 Charles의 기사 참조).

Excel의 계산 엔진은 개발 당시 Excel을 경쟁 제품과 차별화시키는 "재계산 또는 죽기" 철학을 기반으로 합니다. 이 기사를 확인하세요:https://www.geekwire.com/2015/recalc-or-die-30-years-later-microsoft-excel-1-0-vets-recount-a-project-that-defied-the-odds/

답변2

다른 답변은 재계산 메커니즘과 휘발성 함수의 역할에 초점을 맞추고 있지만 질문의 요점 중 일부가 누락된 것 같습니다. 이는 사용된 규칙을 다루지만 "이유"에 대해서는 그다지 다루지 않습니다. 나는 그것에 집중할 것이다.

디자인 컨셉

가장 현대적인 스프레드시트의 구성 요소와 디자인 개념부터 시작하겠습니다. "책임분담"이 있습니다. 함수는 특정 작업을 수행하고 요청될 때마다 이를 수행하는 전용 루틴입니다. 이와 별도로 스프레드시트 애플리케이션은 요청 시기를 제어합니다.

함수 자체에는 다시 계산할지 여부를 선택하는 논리가 포함되어 있지 않습니다. 모든 Excel 함수의 특성은 트리거될 때마다 특정 유형의 작업을 수행하는 것입니다. 어떤 함수도 현재 값에 대한 자체 "메모리"나 과거 계산 기록을 갖고 있지 않습니다. 해당 작업을 수행하도록 요청받은 것이 이번이 처음인지 알 방법이 없습니다. 따라서 네이티브 함수에는 한 번만 실행되는 기능이 없습니다. 함수가 다시 계산되면 설계된 대로 수행되고 새로운 값이 생성됩니다.

스프레드시트 애플리케이션에는 불필요한 재계산을 건너뛰어 시간을 절약할 수 있는 일부 인텔리전스가 포함되어 있습니다(teylyn의 답변에 설명되어 있음). 그만큼오직재계산을 건너뛴 시간은 재계산 필요성을 유발한 스프레드시트 변경으로 인해 함수 값이 영향을 받지 않았다는 것을 애플리케이션이 알고 있는 경우입니다.

그렇다면 함수를 한 번 실행한 다음 그 값을 보존해야 한다면 어떻게 될까요? 난수를 생성한 다음 결과가 변경되지 않는 예를 들어보세요. 이는 임의로 생성된 상수를 만드는 방법을 설명하며 Excel을 사용하여 이를 수행할 수 있습니다.

Excel은 사용자가 해당 기능을 어떻게 사용하고 싶은지 알 수 없습니다. 계속해서 새로운 값을 생성할지 아니면 마지막 세트를 보존할지 여부. 각 옵션은 Excel이 지원하는 사용 사례입니다. Excel은 새 값을 계산하는 도구와 이전 값을 보존하는 도구를 제공하여 두 경우 모두를 수용합니다. 원하는 것은 무엇이든 만들 수 있습니다. 하지만 사용자는 자신이 원하는 대로 작동하도록 할 책임이 있습니다.

기능 논리

그러면 함수가 수행하는 작업에 대한 논리를 살펴보겠습니다. 해당 값이 스프레드시트의 다른 변경 사항에 영향을 받아서는 안 되기 때문에 재계산 논리에서 무작위 함수를 건너뛰는 것이 합리적일까요?

재계산 시 함수 값이 변경되는지 여부는 함수의 목적과 기반에 따라 다릅니다. 상수 값에 대한 계산은 항상 동일한 결과를 생성합니다. 변경되지 않은 셀 값을 기반으로 하는 작업은 동일한 결과를 생성합니다.

그러나 일부 기능은 매번 다른 결과를 생성하려는 의도와 목적으로 설계되었습니다. 예를 들어 현재 시간을 기준으로 하는 함수를 생각해 보세요. 재계산 시간을 기준으로 새로운 결과가 생성됩니다. 현재 시간을 기준으로 값을 생성하고 다시 계산할 때 업데이트되지 않도록 하는 함수를 사용할 수 없습니다.

재계산 제어 목표는 재계산이 트리거될 때 모든 것이 항상 현재 상태를 반영하도록 하는 것입니다. 현재 시간을 기반으로 하는 기능이 업데이트되지 않으면 해당 기준이 충족되지 않습니다.

RANDBETWEEN과 같은 "임의" 함수는 다시 계산할 때 새로운 난수를 생성하는 목적을 가지고 있습니다. 그것이 그들이 의도한 것입니다. 값이 스프레드시트에서 발생하는 다른 일의 영향을 받아서는 안 되기 때문에 재계산을 건너뛸 수 있다고 주장할 수 있습니다.

이것이 기본 동작이라면 스프레드시트를 업데이트하게 되지만 임의의 값은 일정하게 유지됩니다. 그것은 매우 무작위적인 행동이 아닙니다. 이는 하나의 사용 사례를 지원하지만 다른 사용 사례는 지원하지 않습니다. 기본 디자인 개념으로 돌아가서 다른 기능처럼 처리됩니다. 기본 동작은 Excel에서 이를 다시 계산하도록 하는 것입니다. 사용 사례에 대한 이전 값을 유지하려면 사용 가능한 도구를 사용하여 이를 수행하는 것은 귀하에게 달려 있습니다.

답변3

워크시트의 모든 변경 사항이 실행됩니다.자동 재계산이는 기본 동작입니다.

이를 비활성화하거나 실제 값을 순수한 값(공식의 반대)으로 변환하여 고정할 수 있습니다.

답변4

이것을 버그가 아닌 기능처럼 들리도록 하기 위한 영웅적인 노력에도 불구하고 이 동작이 일상적으로 유리할 가능성은 거의 없습니다. "기능"은 우리 삶을 더 쉽게 만들고, "버그"는 우리 삶을 더 어렵게 만듭니다. 내 경우에는 다른 셀에서 참조하지 않는 셀에 레이블이나 설명을 입력하면 처리하기 불편한 재랜덤화가 발생합니다. 나는 그것을 "버그"라고 부를 것입니다.

예, 재계산을 수동으로 제어하거나(고통) 이를 방지하기 위해 값을 붙여넣을 수 있습니다(역시 괴로움). 하지만 어떤 경우에 시트의 원격 영역에 텍스트를 입력하여 발생하는 다시 무작위화가 삶을 더 쉽게 만들어 줍니까?

"휘발성" 기능을 처리하는 데 몇 가지 논리가 있더라도 관련되지 않고 참조되지 않은 셀에 텍스트를 입력한 후 단순히 "Enter" 키를 누르거나 완전히 관련되지 않은 다른 편집을 수행하는 것 외에 적절한 기준을 통해 재계산을 트리거하는 것은 매우 쉬운 것처럼 보입니다. 이를 방지하는 것이 기본값이어야 하며 구현하기 어려울 것이라고는 상상할 수 없습니다. 누군가가 해당 "기능"을 원하면 해당 기능을 켤 수 있지만 그것이 언제 좋은 일이 될지는 상상할 수 없습니다. 기껏해야 상대적으로 무해할 수도 있습니다. 나에게는 내가 만드는 시트 유형 때문에 큰 번거로움이 있습니다.

마지막으로 - 분석 도구를 사용하면 다양한 방법으로 난수 분포를 생성할 수 있으며, 이렇게 생성된 숫자 범위는 사용자가 지시하지 않는 한 전혀 다시 계산(재랜덤화)되지 않습니다. 따라서 저는 사람들이 필요에 따라 분석 도구를 사용하도록 권장합니다.

관련 정보