워크 시트에서 작업 할 때 Excel RANDBETWEEN 숫자가 변경되는 이유는 무엇입니까?


14

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


"왜 ...?" 아마도 저자 만이 명확한 답변을 줄 수 있기 때문에 여기서는 종종 주제가 아닙니다. 귀하의 질문에 원하는 기능이 포함되어 있지 않으므로 제안하기가 어렵습니다.
Máté Juhász

2
@ MátéJuhász 주어진 답변은 어렵지 않다는 것을 보여줍니다 ...
Solar Mike

대답은 아니지만 여기에 필요한 사람들을위한 몇 가지 해결 방법이 있습니다. stackoverflow.com/questions/8011032/…
Adam

답변:


28

Charles Williams는 Excel에서 일을 계산하는 방법과 이유에 대해 잘 설명했습니다.

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

본질적으로 통합 문서에 휘발성 함수가 포함되어 있으면 (찰스 목록 참조, Excel 버전에 따라 휘발성 함수가 몇 년 동안 변경되었으므로 통합 문서의 셀이 변경 될 때 전체 통합 문서 재 계산이 트리거됩니다 (Excel 인 경우) 자동 계산으로 설정 됨). 통합 문서에 휘발성 함수가 없으면 마지막 변경의 영향을받는 셀만 다시 계산됩니다.

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

차이를 아는 나와 같은 사람들은 가능한 경우 워크 시트 셀에서 OFFSET () 또는 INDIRECT ()와 같은 휘발성 함수를 피하는 것이 좋습니다. 유청은 모든 셀 변경 후 전체 재 계산을 유발하여 통합 문서의 속도를 늦추기 때문입니다. 인덱스가 휘발성이 아니기 때문에 OFFSET () 대신 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 -승산/


3
물론 "휘발성 함수"가 올바르게 정의 된 경우 속도를 제외하고 모든 항목을 다시 계산하는 것과 필요한 것만 다시 계산하는 것 사이에는 눈에 띄는 차이가 없어야합니다.
hobbs

12

다른 답변은 재 계산 메커니즘과 휘발성 함수의 역할에 중점을 두지 만, 그 질문의 요점을 놓친 것 같습니다. 그것은 사용되었지만 아직 "왜"가 아닌 규칙을 다룹니다. 나는 그것에 집중할 것이다.

디자인 컨셉

가장 현대적인 스프레드 시트의 디자인 컨셉과 빌딩 블록으로 시작하겠습니다. "책임 부서"가 있습니다. 기능은 특정 작업을 수행하고 요청 될 때마다 수행하는 전용 루틴입니다. 그와 별도로 스프레드 시트 응용 프로그램은 요청이있을 때 제어합니다.

함수 자체에는 다시 계산하거나 다시 계산하지 않도록 선택할 논리가 없습니다. 모든 Excel 함수의 특성은 트리거 될 때마다 일부 유형의 작업을 수행하는 것입니다. 현재 값에 대한 자체 "메모리"또는 과거 계산 기록이있는 함수는 없습니다. 이것이 처음으로 업무를 수행해야하는지 여부를 알 수있는 방법이 없습니다. 따라서 기본 기능은 한 번만 실행할 수 없습니다. 함수가 다시 계산되면 기능을 수행하도록 설계되어 새로운 가치를 창출합니다.

스프레드 시트 응용 프로그램에는 teylyn의 답변에 설명 된대로 불필요한 재 계산을 건너 뛰어 시간을 절약 할 수있는 지능이 포함되어 있습니다. 에만 응용 프로그램이 함수의 값을 다시 계산 것들의 필요성을 촉발 스프레드 시트의 변화에 의해 영향을받지 않는 것을 알고있는 경우 재 계산이 생략 된 것입니다 시간입니다.

따라서 함수를 한 번 실행 한 다음 그 값을 유지하려면 어떻게해야합니까? 난수를 생성하고 결과가 변경되지 않는 예를 들어보십시오. 무작위로 생성 된 상수 생성에 대해 설명하고 Excel을 사용하여이를 수행 할 수 있습니다.

Excel은 기능을 어떻게 사용하고 싶은지 알 수 없습니다. 새 값을 계속 생성하거나 마지막 세트를 보존할지 여부 각 옵션은 Excel에서 지원하는 사용 사례입니다. Excel은 새 값을 계산하는 도구와 이전 값을 보존하는 도구를 제공하여 두 경우 모두를 수용합니다. 원하는 것을 만들 수 있습니다. 그러나 사용자는 자신이 원하는 것을 수행 할 책임이 있습니다.

기능 논리

함수의 기능에 대한 논리를 봅시다. 재 계산 로직이 임의의 함수를 건너 뛰는 것이 합리적 일 수 있습니까? 스프레드 시트의 다른 변경에 영향을받지 않아야합니다.

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

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

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

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

이것이 기본 동작 인 경우 스프레드 시트를 업데이트하지만 임의의 값은 일정하게 유지됩니다. 그것은 매우 무작위적인 행동이 아닙니다. 그것은 하나의 유스 케이스를 지원하지만 다른 유스 케이스는 지원하지 않습니다. 기본 설계 개념으로 돌아가서 다른 기능과 마찬가지로 처리됩니다. 기본 동작은 Excel에서 다시 계산하는 것입니다. 사용 사례의 이전 값을 유지하려면 사용 가능한 도구를 사용하여이를 수행해야합니다.


이 훌륭한 설명은 내가 찾은 대답에 더 가까이 가면서 여전히 확신이 서지 않습니다. 1과 365 사이에서 25 개의 난수를 생성하려고합니다. 이 TWENTY TIMES를 수행해야합니다 (예, "고전적인"생일 문제의 시뮬레이션입니다). 25 개의 난수 세트를 생성 한 후에는 (1) 다른 세트의 25를 생성하는 동안 (2) 방금 생성 한 20 개의 세트를 정렬 할 수 있습니다. 나는 여기에 다른 사람들이 제안한 해결 방법을 사용 하여이 작업을 수행 할 수 있지만, 이는 초등학교 통계를 공부하는 많은 학생들에게 다가가는 일입니다.
nowradioguy

3
@nowradioguy, 당신이 확신하지 못하는 부분은 무엇입니까? Excel은 특정 방식으로 작동하며 우리는 그 기능과 디자인에 갇혀 있습니다. 요구 사항의 경우 결과를 유지하는 것은 매우 간단합니다. 단지 여러 번 수행하면됩니다. 숫자가 열에있는 경우 한 단계에서 25 세트를 선택하여 복사 한 다음 특수 값을 다른 지점의 셀에 붙여 넣습니다. 클릭 몇 번으로 가장 빠른 방법 일 것입니다. 붙여 넣기로 인해 다시 계산이 시작될 수 있으므로 반복 할 수 있습니다. 몇 분 안에 20 세트를 할 수 있습니다. 그럼 재미있게 보내세요. :-)
fixer1234

2

워크 시트를 변경할 때마다 모든 공식의 자동 재 계산 이 시작 되며 이것이 기본 동작입니다.

(수식과 반대되는) 순수 값으로 변환하여 사용하지 않거나 실제 값을 고정 할 수 있습니다.


1
이해하지만 왜 알게됩니까? 특정 셀에서 생성 된 임의의 숫자가 해당 워크 시트의 다른 곳에서 수행되는 작업의 영향을받는 이유는 분명하지 않습니다.
nowradioguy

3
"평생 동안"임의의 값을 원하거나 자주 변경하려는 경우 Excel은 어떻게 미리 알 수 있습니까? 두 번째 경우는 아마도 하나 일 것입니다 (반대의 경우에는 임의의 값을 셀에 직접 입력 할 수 있음).
MarianD

당신의 진술이 잘못되었습니다. 자동 재 계산으로 모든 공식의 재 계산이 발생하지는 않습니다. 통합 문서에 일시적인 기능이있는 경우에만 해당됩니다.
teylyn

1

"휘발성"공식으로 분류되며 변경이 감지되거나 새 함수가 입력 될 때 다시 계산 된 함수 목록의 일부입니다.

고려해야 할 또 다른 옵션은 시트를 수동 계산으로 전환하여 시트가 발생하는 시점을 제어하도록하는 것입니다. 값이나 수식을 변경해도 다시 계산되지는 않지만 다시 계산하는 것을 잊지 마십시오 ...


나는 인터넷 검색 "휘발성 수식"을 시도했는데 wghat이 "휘발성"수식 목록에 있다고 설명하는 많은 링크가 나오지만 RANDBETWEEN이 왜 휘발성 수식인지에 대한 설명을 찾을 수 없습니다. .
nowradioguy

1
하나는 "무작위"이기 때문에 매번 다시 계산하는 것이 합리적이라고 가정합니다 ... 난수를 고정하려면 2 가지 방법이 있습니다. 더 이상 바뀌지 않을 것입니다. 여기 좋은 정보가 있습니다 : decisionmodels.com/calcsecretsi.htm
Solar Mike

네 감사합니다; 그것은 내 Google 검색에서 나온 결과 중 하나이지만 내 질문을 직접 다루지는 않습니다. 생각해보십시오 : 다른 셀에서 관련이없는 작업을 수행하고 계산이 수행되면 이전에 생성 된 임의의 숫자가 새로 생성되어 변경됩니다. 나에게는 이해가되지 않습니다.
nowradioguy

이벤트가 해당 프로세스를 트리거 할 때 Excel은 셀 값을 다시 계산합니다 .randbetween은 일시적으로 분류됩니다 (F9를 칠 때마다 다시 계산되도록 딸을 위해 주사위 시트를 만들었습니다 ...) 그래서 다시 계산됩니다. 여기는 다음을 참조하십시오 : beatexcel.com/ 휘발성 함수 -excel . 이전에 임의의 숫자를 변경하지 않으려면 두 가지 방법이 있습니다.
Solar Mike

@ fixer1234 NOT EVERYTHING은 휘발성입니다. 스프레드 시트에서 변경 사항이있을 때 모든 수식이 다시 평가되는 것은 아닙니다. 통합 문서에 휘발성 수식이 포함 된 경우에만 발생합니다. Sum () 또는 Countif () 또는 이와 같은 것만있는 경우 wole 통합 문서가 아니라 변경의 영향을받는 셀만 다시 계산합니다.
teylyn

0

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

예, 재 계산을 수동으로 제어하거나 (통증) 값을 붙여 붙여이를 방지 할 수 있지만 (다시 통증) 시트의 먼 영역에 텍스트를 입력하여 발생하는 재 랜덤 화가 어떤 경우에 삶을 더 편하게합니까?

"휘발성"함수 처리에 약간의 논리가 있더라도 관련이없고 참조되지 않은 셀에 텍스트를 입력 한 후 "enter"를 누르거나 완전히 관련이없는 다른 편집을 수행하는 것 외에 적절한 기준을 통해 재 계산을 트리거하는 것은 쉽지 않습니다. 이것이 기본이되어야하고 구현하기가 어려울 것이라고는 상상할 수 없습니다. 누군가가 그 "기능"을 원한다면 그것들을 켤 수 있지만, 그것이 언제 좋은지 상상할 수 없습니다. 기껏해야 비교적 무해 할 수 있습니다. 나를 위해, 내가 만드는 시트 유형 때문에 큰 번거 로움입니다.

마지막으로-분석 툴팩을 사용하면 다양한 방법으로 난수 분포를 생성 할 수 있으며 생성 된 숫자 범위는 사용자가 지시하지 않는 한 전혀 재 계산 (재 랜덤 화)하지 않습니다. 따라서 사람들은 필요에 따라 Analysis ToolPak을 사용하는 것이 좋습니다.


슈퍼 유저에 오신 것을 환영합니다. 이 사이트는 솔루션에 대한 지식 기반이므로 답변 게시물은 질문에서 답변 한 내용에 중점을 두어야합니다. 거의 모든 게시물이 실제로 격렬하고, 의견이며, 논평이며, 사이트 프레임 워크 내에서 비생산적이기 때문에 다운 보트를 유치 할 수 있습니다. 마지막 단락이 유망 할 수 있습니다. 다른 모든 것을 제거하고 마지막 단락을 확장하여 예를 들어 "어떻게"를 더 포함하십시오. Excel 초보자의 경우 해당 툴팩을로드하는 방법을 언급하는 것도 도움이됩니다.
fixer1234
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.