exams2webquiz tem um argumento seed, mas exams2openolat não. Além de especificar manualmente um seed em cada pergunta e corrigir os aspectos de seleção de perguntas, há alguma solução direta? Posso gerar algum tipo de conjunto de perguntas genérico que pode ser salvo e então transformado nos formatos relevantes?
Resumo
Atualmente, infelizmente, não há uma solução adequada e direta para isso. Veja abaixo uma solução alternativa hacky, ajudando a implementar a estratégia de seed da sua pergunta.
Detalhes:
Em geral, nem sempre é possível usar o resultado de uma
exams2xyz
interface em outraexams2xyz
interface porque pode ser necessário um processamento diferente dos exercícios (por exemplo, em relação à marcação do texto, o tipo de gráficos, a maneira como certos suplementos são incorporados, etc.). Então, geralmente é recomendado começar a partir dos exercícios de origem novamente.Às vezes é suficiente definir o mesmo random see antes de chamar diferentes
exams2xyz
interfaces. No entanto,exams2openolat
não é porque IDs aleatórios são gerados para vários elementos XML entre os exercícios.Uma solução alternativa que usamos para outras interfaces é especificar uma
file
matriz que indica exatamente qual arquivo de exercício deve ser usado em qual replicação. E então podemos fornecer umaseed
matriz aleatória da mesma dimensão. Seria mais ou menos direto adicionar essa funcionalidade aexams2openolat
. Masexams2webquiz
daria um pouco mais de trabalho porque isso é estruturado de forma um pouco diferente.Solução alternativa:
Se você não quiser colocar sementes fixas em seus exercícios Rmd (ou Rnw), você pode fazer isso na hora via
expar()
. Para fazer isso para um dado exercício, digamosmyexercise.Rmd
, inclua o seguinte no primeiro pedaço de código (ou adicione um pedaço de código se nenhum existir ainda):Assim, se você executar
exams2xyz("myexercise.Rmd")
, então nada acontece e nenhuma semente aleatória é definida. Mas se você usar,exams2xyz(expar("myexercise.Rmd", seed = 123))
então você cria internamente uma cópia demyexercise.Rmd
em um diretório temporário onde a linha acima é substituída porEntão, com essa ideia, você pode executar
expar(..., seed = ...)
todos os exercícios que quiser colocar em seus testes, criando assim cópias estáticas desses exercícios. E então você pode usar essas cópias estáticas emexams2webquiz()
eexams2openolat()
.Etapas: Use exams2xyz para gerar um conjunto de perguntas consistente usando a semente em um formato (por exemplo, exams2webquiz). Salve o conjunto de perguntas gerado como um arquivo estático, como JSON, XML ou RDS (arquivo de dados R), para reutilização. Leia o arquivo estático ao criar saídas para ambos os formatos.