2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 R Wichmann-Hill generator
Сообщение15.10.2015, 20:22 
Аватара пользователя
Я написал эмуляцию Wichmann-Hill генератора случайных чисел
Код:
wh.unif = function(n, start=0, end=1){
  x = double(n) #initialize x
  y = c(171,172,170)
  z = c(30269, 30307, 30323)
  #If seed does not exist - create it
  if (!exists(".WH.seed",envir=.GlobalEnv)){
    .WH.seed=trunc(runif(3, 1, 30269))
  }else{
    .WH.seed=get(".WH.seed",envir=.GlobalEnv)
  }
  for (i in 1:n) {
    .WH.seed = (y*.WH.seed) %% z
    x[i] = sum(.WH.seed/z) %% 1
  }
#Save the seed
  assign("wh",.WH.seed,envir=.GlobalEnv)
  start + (end-start) * x
}

Но, он выдает результат отличающийся от $\bold{runif}$, а моя задача написать функцию которая будет выдавать такой же результат без использования $\bold{.Random.seed[-1]}$
Код:
b=wh.unif2(5);b
set.seed(wh,"Wich")
a=runif(5);a

Я уже несколько часов пытаюсь понять где ошибка. Можете помочь?

 
 
 [ 1 сообщение ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group