daqana / dqrng

Fast Pseudo Random Number Generators for R
https://daqana.github.io/dqrng/
Other
42 stars 8 forks source link

'prob' argument for dqrng::dqsample #45

Open s3alfisc opened 2 years ago

s3alfisc commented 2 years ago

Hi - first of all, thanks for a great package - it speeds up my code quite a bit!

Do you have any plans to support the prob argument in dqrng::dqsample? It would be super beneficial in my use case - I would like to generate so called 'Mammen weights' for a wild bootstrap, which require such an argument. Right now, I use dqsample for some weights distributions, but have to switch back to sample() for Mammen weights. This in turn causes some trouble with setting a 'global seed' - for Mammen weights, the user of my package would have to set it via set.seed() outside of the bootstrap, and for all other weights use dqrng::dqset.seed() (but of course that is not your problem to solve!)

library(dqrng)

dqrng::dqset.seed(89899807)

n <- 10
mammen_dqrng <- 
  dqrng::dqsample(c(-1, 1) * (sqrt(5) + c(-1, 1))/2, n, replace = TRUE,
                            prob = (sqrt(5) + c(1, -1))/(2 * sqrt(5)))
# Warning message:
#   In dqsample.int(length(x), size, replace, prob) :
#   Using 'prob' is not supported yet. Using default 'sample.int'.
avraam-inside commented 1 year ago

+1. I need this argument too. Did the author abandon the project?

rstub commented 1 year ago

duplicate of #18, but I am finally working on this: https://stubner.me/2022/12/roulette-wheel-selection-for-dqrng/

rstub commented 1 year ago

@s3alfisc, @avraam-inside: The code for weighted sampling has been finally merged. Feel free to give it a try. Version 0.3.0.2 should be on https://rstub.r-universe.dev/dqrng soon.

s3alfisc commented 1 year ago

Amazing, will do! Thanks for notifying me =)

rstub commented 1 year ago

As noted in #52, there are some more things I need to consider w.r.t. to weighted sampling. I will have to back out that code for now in order to release the other changes that have accumulated.