노션

노션 무작위 랜덤값 만드는법 (무작위 순서, 랜덤 수식) [나만의Notion만들기-1편]

두디 2023. 3. 7. 19:40
728x90

노션으로 영어공부 템플릿을 만드는 중

오답노트를 어떻게 하면 더 '노션'답게 만들 수 있을지 고민하게 되었다.

좀더 능동적이고 '재밌는' 복습을 하려면 어떻게 할까?

여기서 필요한건 '무작위성', '랜덤성' 이다.


무작의, 임의의 값을 '난수'라고 한다.

시스템적으로 자연 발생적인 '운'을 온전히 만들기는 생각보다 어렵다.

대신, 사람이 인지하지 못할 정도의 미세한 패턴을 이용해 수가 결정되게 만드는 방식을 사용한다.

그래서 시시각각 변하는 값인 '시간' 값을 활용해 난수를 만드는 방법이 흔히 쓰인다고 한다.

혹은 여러가지 지정된 난수표를 만들고 매번 다른 난수표를 읽게 하는 방법도 존재한다.

이러한 방식을 "의사난수 Pseudo Random"라고 한다.


노션에서 오답노트를 만든다고 가정해보자.

 

문제 칼럼, 정답 칼럼, 오답 칼럼을 각각 만들었다.

노션 데이터베이스에 저장한 값은 수정하기 전까지 고정된 값이다.

 

복습을 할 때마다 똑같은 값을 봐야 한다면, 금방 지겨울 것이고 성취감을 느끼기 어려울 것이다.

공부의 성취감은 문제를 맞추고 심지어 틀리는 과정에 있으니까.

 

노션에서 난수를 생성할 수 있다면 이런 상황에 대한 솔루션이 될 뿐만 아니라,

여러가지 활용이 가능해 보인다.

 

예를들면

1. 랜덤 필터
 > 노션으로 DB를 만들었다면 어떤 페이지들을 어떻게 하면 간편하게 리뷰할 수 있을지 고민하게 된다. 여기서 난수를 활용한 필터를 적용해볼 수 있다.

2. 문제의 문항 순서를 랜덤으로 생성
 > 열심히 DB를 쌓고 리뷰를 위해 만든 테이블은 매너리즘에 빠지기 쉽다. 랜덤성을 적용해 '재밌는' 리뷰를 만들 수 있다. 

그럼 지금부터 노션으로 랜덤한 임의의 수를 만드는 방법을 알아보자.

 

< 예제1 >
Last edited time 과 Created time 을 뺀 값을 이용해  0~1 임의의 수 구하기.

 

[예제 1 formula]
round(toNumber(slice(format(toNumber(prop("Last edited time")) - toNumber(prop("Created time"))), 4, 6)) / 100)
  • 수정일을 사용하기 때문에 '임의의 수'가 요소를 수정할 때마다 달라진다. 즉 랜덤성이 지속적으로 부여된다.
  • Last edited time만 써도 될 것처럼 보이나, 비슷한 시점에 수정된 항목들은 출력값이 같아지는 치명적인 오류가 있기 때문에 Created time을 빼는 값을 이용해 문제를 해결했다.
  • 요소가 수정되면 '임의의 수'가 바뀌기 때문에 경우에 따라 단점이 될 수 있다. 그런 경우 두번째 방법을 이용하자.

노션에서 <예제1>을 적용하고 있다!

 

 

<예제2 >
Created time 을 이용해 0~1 임의의 수 구하기.

[예제 2 formula]
round(toNumber(slice(format(toNumber(prop("Created time"))), 6, 8)) / 100)
  • 생성일(Created time)만을 사용하기 때문에 '임의의 수'는 고정값이다. 즉 랜덤성이 일회성으로 부여된다.
  • 무작위성은 필요하지만 매번 바뀔 필요가 없다면 예제 2를 사용하면 된다.

 

 


 

정답 입력 칼럼을 만들경우, 예제1은 정답을 입력하는 순건 문항이 바뀌여 버린다.

이 경우 예제2를 사용하는게 적합하겠다.  

 

아래 움짤은 실제 난수를 활용한 노션 테이블이다.

  1. '01난수' 칼럼에 0과 1이 임의로 수가 부여된다.
  2. '이지선다 문항' 칼럼에
    난수 == 1일 경우, 첫번째 칸에 정답이 배치되고,
    난수 == 0일 경우, 두번째 칸에 정답이 배치되도록 하여 '무작위'로 배치되도록 했다.
  3. 즉 정답의 위치가 항목마다 바뀌므로, 문제를 풀때 답의 위치를 외워버리는 매너리즘을 막았다.
  4. 또한 정답을 고른 경우 ✅를 표시하고, 오답을 고른 경우❌를 표시해서 체점하는 formula를 추가했다.

 

 


 

상기의 방법을 응용하면 0, 1 뿐만 아니라 0~5, 0~10 이상의 랜덤값도 만들 수 있다.

자세한 내용은 업로드 후 링크 예정이다.

 

 

추가로 Last edited time 을 사용하지 않으면서, 랜덤성을 지속적으로 부여할 수 있는 방법을 고민중이다.

 

 
[odap noteureul mandeulda]
make a note of the wrong answers one has gotten on a test
 
 
 
 
 
 
 
 
728x90