Dies ist etwas, das ich gelegentlich zu tun haben wollte - und haben noch mit viel besser als die folgenden Flickschusterei nicht kommen (was, wenn Sie wirklich nützlich ist, sind mit nur 1 oder 2 unterschiedliche Zufallsverteilungen, wie Sie eine Funktion für jeden schreiben.
#Make a list of seeds - generalises to mkore than 2
seed <- list(NA,NA)
set.seed(1)
seed[[1]] <- .Random.seed
set.seed(2)
seed[[2]] <- .Random.seed
my_runif <- function(...,which.seed=1)
{
.Random.seed <<- seed[[which.seed]]
x <-runif(...)
seed[[which.seed]] <<- .Random.seed
x
}
##Print some data for comparison
> set.seed(1); runif(10)
[1] 0.26550866 0.37212390 0.57285336 0.90820779 0.20168193 0.89838968 0.94467527 0.66079779 0.629114040.06178627
> set.seed(2); runif(10)
[1] 0.1848823 0.7023740 0.5733263 0.1680519 0.9438393 0.9434750 0.1291590 0.8334488 0.4680185 0.5499837
#Test
> my_runif(1,which.seed=1)
[1] 0.2655087
> my_runif(1,which.seed=1)
[1] 0.3721239
> my_runif(1,which.seed=1)
[1] 0.5728534
> my_runif(1,which.seed=2)
[1] 0.1848823
> my_runif(1,which.seed=1)
[1] 0.9082078
ich mir vorstellen würde, dass die <<-
brechen, wenn Sie my_runif aus innerhalb einer anderen Funktion aufrufen
fortunes::fortune("<<-")
ETA: Die folgende könnte
my_runif <- function(...,which.seed=1)
{
assign(".Random.seed", seed[[which.seed]], envir = .GlobalEnv)
x <-runif(...)
seed <- seed #Bring into local envir
seed[[which.seed]] <- .Random.seed
assign("seed", seed, envir = .GlobalEnv)
x
}
C++ 11 Unterstützung im Compiler? – Yakk
Warum generierst du nicht alle deine Zufallszahlen mit den verschiedenen Samen vor? A und B können eine Politik haben, Nummern aus dem generierten Satz ohne Wiederholungen zu wählen (gerade/ungerade Indizes, bei denen die Odds einen Seed haben und einen anderen Sequence, Sequence usw.). Wenn Sie keine Zahlen mehr haben, generieren Sie mehr, wenn das ein Problem ist. – mockinterface
Ich denke, das ist der beste Ansatz, den ich habe. Es kann ineffizient sein, dass ich viel mehr Zahlen erzeuge und speichere, als ich jemals brauchen werde, aber wenn es keine Möglichkeit gibt, mehrere unabhängige Stapel von Zufallszahlen im Angebot zu haben, muss ich an eine clevere Umsetzung des Mockinterface-Vorschlags denken . Vielen Dank für Ihre schnellen Antworten. –