The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.

Title: Improved Random Number Generator Seeding
Version: 0.1.0
Description: A procedure for seeding R's built in random number generators using a variable-length sequence of values. Accumulates input entropy into a 256-bit hash digest or "ironseed" and is able to generate a variable-length sequence of output seeds from an ironseed.
License: MIT + file LICENSE
Language: en-US
Encoding: UTF-8
RoxygenNote: 7.3.2
Biarch: TRUE
NeedsCompilation: yes
URL: https://github.com/reedacartwright/ironseed
BugReports: https://github.com/reedacartwright/ironseed/issues
Suggests: tinytest
Packaged: 2025-07-06 21:50:57 UTC; reed
Author: Reed Cartwright ORCID iD [aut, cre]
Maintainer: Reed Cartwright <racartwright@gmail.com>
Repository: CRAN
Date/Publication: 2025-07-11 08:40:02 UTC

Ironseed: Improved Random Number Generator Seeding

Description

A procedure for seeding R's built in random number generators using a variable-length sequence of values. Accumulates input entropy into a 256-bit hash digest or "ironseed" and is able to generate a variable-length sequence of output seeds from an ironseed.

Author(s)

Maintainer: Reed Cartwright racartwright@gmail.com (ORCID)

See Also

Useful links:


Initialize .Random.seed

Description

Initialize .Random.seed

Usage

fill_random_seed(x, quiet = FALSE)

has_random_seed()

get_random_seed()

set_random_seed(seed)

Arguments

x

an ironseed.

quiet

a logical indicating whether to silence messages.

seed

a previous .Random.seed

Value

fill_random_seed() returns the previous value of .Random.seed or NULL.


Ironseed: Improved Random Number Generator Seeding

Description

An ironseed is a 256-bit hash digest constructed from a variable-length input sequence and can be used to generate a variable-length output sequence of seeds, including initializing R's built-in random number generator.

Usage

ironseed(..., set_seed = !has_random_seed(), quiet = FALSE)

create_seedseq(fe, n)

is_ironseed(x)

is_ironseed_str(x)

as_ironseed(x)

parse_ironseed_str(x)

Arguments

...

objects

set_seed

a logical indicating whether to initialize .Random.seed.

quiet

a logical indicating whether to silence messages.

fe

an ironseed

n

a scalar integer specifying the number of seeds to generate

x

a string, ironseed, or other object

Details

Ironseeds have a specific string representation, e.g. "rBQSjhjYv1d-z8dfMATEicf-sw1NSWAvVDi-bQaKSKKQmz1", where each element is a 64-bit number encoded in little-endian base58 format.

Parameter set_seed defaults to TRUE if .Random.seed does not already exist and FALSE otherwise.

Ironseed behaves differently depending on the number of arguments passed as ....

An ironseed is a finite-entropy (or fixed-entropy) hash digest that can be used to generate an unlimited sequence of seeds for initializing the state of a random number generator. It is inspired by the work of M.E. O’Neill and others.

An ironseed is a 256-bit hash digest constructed from a variable-length sequence of 32-bit inputs. Each ironseed consists of eight 32-bit sub-digests. The sub-digests are 32-bit multilinear hashes that accumulate entropy from the input sequence. Each input is included in every sub-digest. The coefficients for the multilinear hashes are generated by a Weyl sequence.

Multilinear hashes are also used to generate an output seed sequence from an ironseed. Each 32-bit output value is generated by uniquely hashing the sub-digests. The coefficients for the output are generated by a second Weyl sequence.

Value

An ironseed. If .Random.seed was initialized, the ironseed used will be returned invisibly.

References

See Also

.Random.seed

Examples




# Generate an ironseed with user supplied data
ironseed::ironseed("Experiment", 20251031, 1)

# Generate an ironseed automatically and initialize `.Random.seed` with it
ironseed::ironseed(set_seed = TRUE)



These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.