Технический форум

Технический форум (http://www.tehnari.ru/)
-   Помощь студентам (http://www.tehnari.ru/f41/)
-   -   Вопрос по Wichmann-Hill RNG (http://www.tehnari.ru/f41/t104781/)

SlowSpock 15.10.2015 23:57

Вопрос по Wichmann-Hill RNG
 
Я написал эмуляцию Wichmann-Hill генератора случайных чисел в R:

Код:

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
}

Но, он выдает результат отличающийся от runif, а моя задача написать функцию которая будет выдавать такой же результат без использования .Random.seed[-1]

Код:

b=wh.unif2(5);b
set.seed(wh,"Wich")
a=runif(5);a

Как я понимаю, этот форум не совсем по программе R, но может сможете указать на ошибку в коде. Заранее спасибо!


Часовой пояс GMT +4, время: 12:29.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.