# polylib::randpoly

Create a random polynomial

### Use only in the MuPAD Notebook Interface.

This functionality does not run in MATLAB.

## Syntax

```polylib::randpoly()
polylib::randpoly(<`list`>, <`ring`>, <`Degree = n`>, <`Terms = k`>, <`Coeffs = f`>, <Monic>)
```

## Description

`polylib::randpoly()` returns a univariate random polynomial with integer coefficients; the global identifier `x` is used as the indeterminate.

`polylib::randpoly(list)` returns a random polynomial in all indeterminates given in `list`.

`polylib::randpoly(list, ring)` returns a random polynomial in the indeterminates given in `list` over the coefficient ring `ring`.

See `poly` for a detailed description of possible indeterminates and coefficient rings.

The polynomial is created by randomly choosing as many exponents as specified through the option `Terms` and then choosing random coefficients. It may of course happen that for some coefficient 0 is chosen, therefore the actual number of terms in the result can be smaller than the value of the option `Terms`.

If the option `Coeffs=f` is given, the random coefficients are generated by calling `f()`. Otherwise, if `ring` is `Expr`, the coefficients will be random integers in the range - 999, …, 999. If `ring` is a user-defined domain, it must have a method `"random"` to create the coefficients if no function is given.

If the option `Monic` is given, the resulting polynomial has exactly the specified degree and the leading coefficient is 1.

If the requested number of terms exceeds the maximal possible number of terms for the specified degree and number of variables, a warning is emitted and a dense polynomial is created.

## Environment Interactions

Unless a generator is specified through the option `Coeffs`, `polylib::randpoly` uses `random` to create the exponents and coefficients. Therefore it is sensitive to the environment variable `SEED`.

## Examples

### Example 1

We generate a univariate random polynomial in the indeterminate `z`, and use the default values for the other options. Therefore the polynomial has integer coefficients, is of degree 5, and has 6 terms.

`polylib::randpoly([z])`

### Example 2

We create a bivariate random polynomial over the finite field with 7 elements. This works because `Dom::IntegerMod` has a `"random"` slot that generates random elements:

`polylib::randpoly([x,y],Dom::IntegerMod(7),Degree=3,Terms=4);`

## Parameters

 `list` List of indeterminates `ring` Coefficient ring

## Options

 `Degree` Option, specified as `Degree = k` The maximum degree the result can have in each variable. `k` must be a nonnegative integer. Default is 6. `Terms` Option, specified as `Terms = t` Makes `polylib::randpoly` generate the sum of `t` random terms. `t` must be a positive integer or `infinity`. If `t` equals `infinity`, `polylib::randpoly` returns a dense polynomial. Default is 5. `Coeffs` Option, specified as `Coeffs = f` Create the coefficients of the result by calling `f()`. `Monic` The created polynomial is monic, i.e., the leading coefficient is 1.

## Return Values

Polynomial in the given indeterminates over the given ring. If no list of indeterminates is given, `[x]` is used. If no ring is given, `Expr` is used.