# Generates variable seeds upon each call to a RNG-using function.

Source:`R/random.R`

`random_seed_generator.Rd`

In Keras, all RNG-using methods (such as `random_normal()`

)
are stateless, meaning that if you pass an integer seed to them
(such as `seed = 42`

), they will return the same values at each call.
In order to get different values at each call, you must use a
`SeedGenerator`

instead as the seed argument. The `SeedGenerator`

object is stateful.

## Value

A `SeedGenerator`

instance, which can be passed as the `seed = `

argument to other random tensor generators.

## Examples

```
seed_gen <- random_seed_generator(seed = 42)
values <- random_normal(shape = c(2, 3), seed = seed_gen)
new_values <- random_normal(shape = c(2, 3), seed = seed_gen)
```

Usage in a layer:

```
layer_dropout2 <- new_layer_class(
"dropout2",
initialize = function(...) {
super$initialize(...)
self$seed_generator <- random_seed_generator(seed = 1337)
},
call = function(x, training = FALSE) {
if (training) {
return(random_dropout(x, rate = 0.5, seed = self$seed_generator))
}
return(x)
}
)
out <- layer_dropout(rate = 0.8)
out(op_ones(10), training = TRUE)
```

## See also

Other random: `random_categorical()`

`random_dropout()`

`random_gamma()`

`random_integer()`

`random_normal()`

`random_shuffle()`

`random_truncated_normal()`

`random_uniform()`