시험문제 랜덤 선택 자동화 기능

소개

구글 클래스룸을 활용하여 퀴즈 과제 또는 이론 ‎​시험문제를 출제하여
학생들에게 시험을 보게 할 때 구글 설문지를 자주 사용하는데요

물론 구글 설문지 설정에 질문 순서를 섞는 기능이 있습니다.
그런데 저는 시험문제 출제를 100문제 정도 만들고
시험문제를 60개 정도 랜덤으로 섞어서 자동으로 각 학생들에게 시험문제가 선택되어지도록 만드는 방법을 알아내고 싶었어요.

진행 방법

일단 ChatGPT와 Perplexcity를 활용하여 프롬프트에 입력하고 질문을 해봤습니다.

GPT의 응답을 아래와 같습니다.

각 학생이 100개 풀에서 무작위로 선택된 고유한 60개 질문 세트를 받는 Google Forms에서 퀴즈를 만들려면 Google Forms 및 Google Apps Script와 함께 Google Sheets를 사용할 수 있습니다.

단계별 방법은 다음과 같습니다.

1단계: 질문 준비

  • Google 스프레드시트에서 질문에 대한 새 시트를 만듭니다.

  • 질문 및 답변(객관식인 경우) 열에 레이블을 지정하고 행에 100개의 질문을 모두 입력합니다.

2단계: Google 양식 만들기

  • 새로운 Google Form을 생성하고 기본 구조를 설정합니다.

  • 모든 질문을 수동으로 입력할 필요는 없습니다. 대신 스크립트를 사용하여 채우세요.

3단계: Google Apps 스크립트를 작성하여 무작위화 자동화

  • Google 스프레드시트에서 확장 프로그램 > Apps Script로 이동합니다.

  • 다음 스크립트를 복사하여 붙여넣으면 풀에서 60개의 질문을 무작위로 선택하여 Google 양식에 삽입합니다.

```javascript

function generateRandomQuiz() {

const formId = 'YOUR_GOOGLE_FORM_ID'; // Replace with your Form ID

const form = FormApp.openById(formId);

const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1'); // Update if needed

const questionsRange = sheet.getRange('A2:A101'); // Adjust as necessary

const allQuestions = questionsRange.getValues().flat();

// Clear previous questions from the form

const items = form.getItems();

items.forEach(item => form.deleteItem(item));

// Randomly select 60 questions

const selectedQuestions = [];

while (selectedQuestions.length < 60) {

const randomIndex = Math.floor(Math.random() * allQuestions.length);

const question = allQuestions[randomIndex];

if (!selectedQuestions.includes(question)) {

selectedQuestions.push(question);

}

}

// Add selected questions to the form

selectedQuestions.forEach(question => {

form.addMultipleChoiceItem().setTitle(question).setChoiceValues(['Option 1', 'Option 2', 'Option 3', 'Option 4']);

});

}

```

  • 'YOUR_GOOGLE_FORM_ID'`를 Google 양식의 실제 ID(양식 URL에 있음)로 바꿉니다.

  • 스크립트를 저장하고 Google 양식 및 시트에 액세스할 수 있는 권한을 부여하세요.

4단계: 스크립트 실행

  • Apps Script 편집기에서 실행 > generateRandomQuiz로 이동하여 Google 양식에 무작위 질문 세트를 만듭니다.

  • 각 학생이 고유한 질문을 받을 수 있도록 각 시험 세션 전에 이 과정을 반복합니다.

5단계: 양식 배포

  • Google 클래스룸을 통해 Google 양식 링크를 공유하면 각 학생은 업데이트된 양식을 기반으로 하는 무작위 질문 세트를 받게 됩니다.

  • 이 접근 방식을 사용하면 대규모 질문 풀을 미리 준비하고 각 학생이 고유한 하위 집합을 받도록 보장하여 잠재적인 답변 공유를 방지할 수 있습니다.

  • Google Apps Script에 대한 추가 맞춤설정이나 지원이 필요한 경우 알려주시기 바랍니다.

Q1: 각 수업 전에 준비되도록 무작위 테스트 일정을 자동화하려면 어떻게 해야 합니까?

질문2: 이 방법을 적용하여 각 학생의 성과를 자동으로 추적하면서 다양한 퀴즈 버전을 생성할 수 있나요?

질문3: 단답형이나 단락 등 객관식 이외의 질문 유형을 포함하도록 Google Apps Script를 개선하려면 어떻게 해야 하나요?








아래는 Perplexity pro에게 물어본 내용입니다.

구글 설문지에서 직접적으로 100개의 문제 중 60개를 무작위로 선택하여 각 학생에게 다른 문제를 제시하는 기능은 현재 제공되지 않습니다. 하지만 이와 유사한 효과를 얻을 수 있는 몇 가지 방법이 있습니다:

1. 구글 스프레드시트와 Form Builder 애드온 활용:

- 구글 스프레드시트에 100개의 문제를 입력합니다.

- Form Builder for Sheets 애드온을 설치합니다.

- 스프레드시트에서 RANDBETWEEN 함수를 사용하여 60개의 무작위 문제를 선택합니다.

- Form Builder를 사용하여 선택된 문제들로 구글 설문지를 생성합니다[5][9].

2. 섹션 활용:

- 100개의 문제를 여러 섹션으로 나눕니다(예: 20개씩 5개 섹션).

- 각 섹션에서 무작위로 12개의 문제를 표시하도록 설정합니다.

- "섹션 순서 섞기" 옵션을 활성화합니다[2].

3. 스크립트 작성:

- Google Apps Script를 사용하여 커스텀 스크립트를 작성합니다.

- 스크립트에서 100개의 문제 중 60개를 무작위로 선택하여 설문지를 동적으로 생성하는 로직을 구현합니다[1].

4. 외부 도구 활용:

- Formfacade와 같은 서드파티 도구를 사용하여 고급 기능을 추가할 수 있습니다[8].

이 방법들 중 가장 실용적인 것은 구글 스프레드시트와 Form Builder 애드온을 활용하는 것입니다. 이 방법을 통해 문제 은행을 쉽게 관리하고, 필요할 때마다 새로운 무작위 문제 세트를 생성할 수 있습니다.

구현 시 주의할 점은 각 학생이 동일한 난이도의 시험을 치르도록 문제의 난이도를 균형 있게 분배해야 한다는 것입니다. 또한, 시험의 공정성을 위해 모든 학생이 동일한 시간 제한을 갖도록 설정해야 합니다.

이 방법들을 통해 학생들에게 다양한 문제를 제공하면서도 공정한 평가를 할 수 있을 것입니다.

Citations:

[1] https://stackoverflow.com/questions/60112365/can-i-randomize-items-in-multiplechoiceitem

[2] https://www.reddit.com/r/GoogleForms/comments/17qqc56/create_small_quiz_from_question_bank/

[3] https://stackoverflow.com/questions/59770233/google-form-random-questions-from-a-bank-different-every-time-form-is-opened

[4] https://www.youtube.com/watch?v=V6PCbVYx9Ps

[5] https://www.youtube.com/watch?v=ODFCr7Rt9nY

[6] https://support.google.com/edu/classroom/thread/229613648/can-you-randomize-and-limit-the-number-of-questions-the-students-need-to-answer-in-practice-sets?hl=en

[7] https://www.thebricks.com/resources/how-to-randomly-select-in-google-sheets

[8] https://formfacade.com/embed/google-forms-shuffle-question-order.html

[9] https://www.youtube.com/watch?v=kQmISd8XT9s

[10] https://support.google.com/docs/thread/182389377/how-do-i-randomly-assign-survey-takers-to-a-group-for-a-google-forms-survey?hl=en

[11] https://support.google.com/docs/thread/251535384/using-google-forms-as-a-randomised-question-bank-for-quizzes?hl=en

[12] https://www.jotform.com/answers/1702782-generate-random-questions-from-a-pool

[13] https://www.lido.app/forms/how-to-shuffle-questions-in-google-forms

[14] https://extendedforms.io/blog/create-a-question-bank-in-google-forms

[15] https://www.youtube.com/watch?v=r8GCJwPRCZg

결과와 배운 점

GPT 분석 방법도 매우 흥미로운데

Perplexcity pro는 총 3가지 방법을 제안하고 레퍼런스도 잘 만들어줬다는 점이 매우 고무적입니다.

밤이라서 오늘 실행해보고 어떤 방법들이 잘 실행되는지 다시 정리하여 글을 올려 보겠습니다 ^^
모두 굿나잇 ^^

도움 받은 글 (옵션)

칼퇴 자동화_조현정 방장님의 영상을 보고 아이디어를 얻었습니다.
감사합니다.

3
2개의 답글

👉 이 게시글도 읽어보세요