# num_to_schoice

##### Generate Single-Choice Question List from Numeric Solution

A function for generating a single-choice question list for one correct numeric solution along with four wrong solutions.

- Keywords
- utilities

##### Usage

```
num_to_schoice(correct, wrong = NULL, range = c(0.5, 1.5) * correct,
delta = 1, digits = 2, method = c("runif", "delta"), sign = FALSE,
verbose = getOption("num_to_choice_warnings"))
```

##### Arguments

- correct
numeric vector of length 1 with correct solution.

- wrong
numeric vector (optional) with wrong solutions.

- range
numeric vector of length 2 with range of random wrong solutions.

- delta
numeric. Minimal distance between solutions.

- digits
integer. Digits that should be displayed.

- method
character specifying method for generating random results.

- sign
logical. Should the sign be changed randomly?

- verbose
logical. Should warnings be issued if no suitable set of wrong solutions can be found?

##### Details

The function `num_to_schoice`

(or equivalently `num2schoice`

)
can be used for generating a single-choice
question list for a numeric `correct`

solution. The question list
always comprises five elements, one of which is the correct solution. The
wrong solutions can be provided or are generated randomly. If `wrong`

is provided only up to 2 elements of it are used in order to assure some
random solutions.

Two methods can be used to generate the wrong solutions: Either simply
`runif`

or otherwise a full equi-distant grid for the
`range`

with step size `delta`

is set up from which a discrete
uniform sample is drawn. The former is preferred if the `range`

is large
enough while the latter performs better if the `range`

is small (as
compared to `delta`

.

Exercise templates using `num_to_schoice`

should be thoroughly
tested in order to avoid problems with too small ranges or almost
identical correct and wrong answers! This can potentially cause problems,
infinite loops, etc.

##### Value

`num_to_schoice`

/`num2schoice`

returns either `NULL`

(if no suitable question
list can be found) or a list with the following components:

a logical vector of length 5 indicating the `correct`

solution,

a character vector of length 5 with question list.

##### See Also

##### Examples

```
# NOT RUN {
set.seed(1)
## just a correct solution
num_to_schoice(123.45)
## or equivalently
set.seed(1)
num2schoice(123.45)
## just a correct integer solution
num_to_schoice(123, digits = 0)
## a correct solution with a wider range
num_to_schoice(123.45, range = c(0, 200))
## here, the defaults can't work...
## num_to_schoice(0.1234)
## alternatives could be
num_to_schoice(0.1234, range = c(0, 1), delta = 0.03, method = "delta")
num_to_schoice(0.1234, range = c(-5, 5), delta = 0.05)
num_to_schoice(0.1234, wrong = c(0.2749, 1.9723), delta = 0.05)
num_to_schoice(0.1234, wrong = c(0.2749, 1.9723), range = c(-5, 5), delta = 0.05)
# }
```

*Documentation reproduced from package exams, version 2.3-6, License: GPL-2 | GPL-3*