#We used linear random generator for generating random numbers.
#It was simple to impliment and if the parameter values are chosen carefully, the algorithm's accuracy can be really high.
#We used cc65 compiler parameters.
globals <- new.env()
max.random = 2 ** 32
globals$seed <- (as.double(Sys.time())) %% max.random
#seed = (as.integer(Sys.time())) %% max.random
rgenerator <- function(count){
arr <- c(globals$seed)
if(count != 1){
for(i in 2:count){
arr[i] <- (16843009 * arr[i-1] + 826366247) %% max.random
}
}
globals$seed <- ((16843009 * arr[count] + 826366247) %% max.random)
# seed <<- ((16843009 * arr[count] + 826366247) %% max.random)
return(arr)
}
dugen <- function(n,a,b){
return((rgenerator(n) / max.random) * (b-a) + a)
}
cugen <-function(n){
return(dugen(n,0,1))
}
brgen <- function(n, p)
{
random = cugen(n)
a = c()
for (i in random){
if(i < p)
{
a = append(a, 1)
}
else
{
a = append(a, 0)
}
}
return(a)
}
bigen <- function(count, n, p){
result = c()
for(i in 1:count){
#result = append(result, sum(brgen(n, p)))
result[i] = sum(brgen(n, p))
}
return(result)
}
gegen <- function(n, p)
{
ret = c()
for(i in 1:n){
result = 0
while(!brgen(1, p))
{}
while(!brgen(1, p))
{
result = result + 1
}
ret[i] = result
}
return(ret)
}
expgen <- function(n, lambda){
return(-1*log(cugen(n)) / lambda)
}
gagen <- function(n, lambda , k){
result = c()
for (i in 1:n){
result[i] = sum(expgen(k, lambda))
}
return(result)
}
pogen <- function(n, lambda, t){
result = c()
for(i in 1:n){
time = 0
num = 0
while(TRUE){
time = time + expgen(1, lambda)
if(time > t){
break
}
num = num + 1
}
result[i] = num
}
return(result)
}
nogen <- function(n, u, s){
po = pogen(n, s, 1)
po = po - (s - u)
return(po)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.