Hi Rui,

Many thanks for your time and insight.

However, I am not sure if I could understand the code. Below is what I
tried based on your code

library(Surrogate)
a <- c(0.015, 0.005)
b <- c(0.070, 0.045)
set.seed(2025)
res <- mapply(\(a, b, s, n, m) RandVec(a, b, s, n, m),
               MoreArgs = list(s = 0.05528650577311, n = 2, m = 10000), a, b)

res1 = res[[1]]
res2 = res[[2]]

apply(res1, 1, min) > a   ## [1] TRUE TRUE
apply(res2, 1, min) > a   ## [1] FALSE  TRUE

I could not understand what basically 2 blocks of res signify? Which
one I should take as final simulation of the vector? If I take the
first block then the lower bound condition is fulfilled, but not with
the second block. However with the both blocks, the total equals s is
satisfying.

I appreciate your further insight.

Thanks and regards,

On Mon, 21 Apr 2025 at 20:43, Rui Barradas <ruipbarra...@sapo.pt> wrote:
>
> Hello,
>
> Inline.
>
> Às 16:08 de 21/04/2025, Rui Barradas escreveu:
> > Às 15:27 de 21/04/2025, Brian Smith escreveu:
> >> Hi,
> >>
> >> There is a function called RandVec in the package Surrogate which can
> >> generate andom vectors (continuous number) with a fixed sum
> >>
> >> The help page of this function states that:
> >>
> >> a
> >>
> >> The function RandVec generates an n by m matrix x. Each of the m
> >> columns contain n random values lying in the interval [a,b]. The
> >> argument a specifies the lower limit of the interval. Default 0.
> >>
> >> b
> >>
> >> The argument b specifies the upper limit of the interval. Default 1.
> >>
> >> However in my case, the lower and upper limits are not same. For
> >> example, if I need to draw a pair of number x, y, such that x + y = 1,
> >> then the lower and upper limits are different.
> >>
> >> I tried with below code
> >>
> >> library(Surrogate)
> >>
> >> RandVec(a=c(0.1, 0.2), b=c(0.2, 0.8), s=1, n=2, m=5)$RandVecOutput
> >>
> >> This generates error with message
> >>
> >> Error in if (b - a == 0) { : the condition has length > 1
> >>
> >> Is there any way to generate the numbers with different lower and
> >> upper limits?
> >>
> >> ______________________________________________
> >> R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
> >> https://stat.ethz.ch/mailman/listinfo/r-help
> >> PLEASE do read the posting guide https://www.R-project.org/posting-
> >> guide.html
> >> and provide commented, minimal, self-contained, reproducible code.
> > Hello,
> >
> > Use ?mapply to cycle through all values of a and b.
> > Note that the output matrices are transposed, the random vectors are the
> > rows.
> Sorry, this is not true. The columns are the random vectors, as
> documented. An example setting the RNG seed, for reproducibility.
>
>
> library(Surrogate)
>
> a <- c(0.1, 0.2)
> b <- c(0.2, 0.8)
> set.seed(2025)
> res <- mapply(\(a, b, s, n, m) RandVec(a, b, s, n, m),
>                MoreArgs = list(s = 1, n = 2, m = 5), a, b)
>
> res
> #> $RandVecOutput
> #>          [,1]      [,2]      [,3]     [,4]      [,5]
> #> [1,] 0.146079 0.1649319 0.1413759 0.257086 0.1715478
> #> [2,] 0.253921 0.2350681 0.2586241 0.142914 0.2284522
> #>
> #> $RandVecOutput
> #>           [,1]      [,2]      [,3]      [,4]      [,5]
> #> [1,] 0.5930918 0.2154583 0.6915523 0.7167089 0.3617918
> #> [2,] 0.4069082 0.7845417 0.3084477 0.2832911 0.6382082
>
> lapply(res, colSums)
> #> $RandVecOutput
> #> [1] 0.4 0.4 0.4 0.4 0.4
> #>
> #> $RandVecOutput
> #> [1] 1 1 1 1 1
>
>
> Hope this helps,
>
> Rui Barradas
> >
> >
> > library(Surrogate)
> >
> > a <- c(0.1, 0.2)
> > b <- c(0.2, 0.8)
> > mapply(\(a, b, s, n, m) RandVec(a, b, s, n, m),
> >         MoreArgs = list(s = 1, n = 2, m = 5), a, b)
> > #> $RandVecOutput
> > #>           [,1]      [,2]      [,3]      [,4]      [,5]
> > #> [1,] 0.2004363 0.1552328 0.2391742 0.1744857 0.1949236
> > #> [2,] 0.1995637 0.2447672 0.1608258 0.2255143 0.2050764
> > #>
> > #> $RandVecOutput
> > #>           [,1]      [,2]      [,3]      [,4]      [,5]
> > #> [1,] 0.2157416 0.4691191 0.5067447 0.7749258 0.7728955
> > #> [2,] 0.7842584 0.5308809 0.4932553 0.2250742 0.2271045
> >
> >
> > Hope this helps,
> >
> > Rui Barradas
> >
> >
>
>
> --
> Este e-mail foi analisado pelo software antivírus AVG para verificar a 
> presença de vírus.
> www.avg.com

______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide https://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to