Dear friend Rui,
Thank you so much for your extremely valuable help.
This is the dice function I used:
https://www.rdocumentation.org/packages/TeachingDemos/versions/2.12/topics/dice
<https://www.rdocumentation.org/packages/TeachingDemos/versions/2.12/topics/dice>
One question, how would I modify your code to run it for 1,000,000 rolls
1 time?
Best,
Paul
El dom, 24 abr 2022 a las 8:58, Rui Barradas (<ruipbarra...@sapo.pt
<mailto:ruipbarra...@sapo.pt>>) escribió:
Hello,
I still can't find the package dice you are using, it's not the one on
CRAN, that one only has two functions, like I said earlier.
Anyway, I have replaced function dice(9 by a call to sample().
And simplified the code a lot. It takes half a minute to run the
1,000,000 simulations K = 10 times (upper case K).
See if this is what you want.
# these two are equal
cnames0 <-
c("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec")
cnames <- month.abb
identical(cnames0, cnames)
# [1] TRUE
# performing 1,000,000 simulations 10 times
num_trials_6 <- 1e6
dice_rolls_6 <- num_trials_6*12
num_dice_6 <- 1
dice_sides_6 <- 6
set.seed(2022)
prob_frame_6 <- as.data.frame(matrix(ncol = 10L, nrow = 1L))
K <- 10L
for(k in seq_len(K)){
#
dice_simul_6 <- sample(dice_sides_6, dice_rolls_6, replace = TRUE)
# constructing matrix containing results of all dice rolls by month
prob_matrix_6 <- matrix(dice_simul_6, ncol = 12, byrow = TRUE)
# naming each column by it's corresponding month name
colnames(prob_matrix_6) <- month.abb
# calculating column which will have a 1
# if trial was successful and a 0 otherwise
success <- integer(num_trials_6)
for(i in seq_len(num_trials_6)){
success[i] <- as.integer(all(1:6 %in% prob_matrix_6[i, ]))
}
#calculating probability of success
p6 <- mean(success)
prob_frame_6[1, k] <- p6
}
colnames(prob_frame_6) <- sprintf("p%d", seq_len(K))
average_prob_frame_6 <- rowMeans(prob_frame_6)
final_frame_6 <- cbind(prob_frame_6, average_prob_frame_6)
write.csv(final_frame_6, "OneMillion_Trials_Ten_Times_Results.csv")
print(final_frame_6)
print(paste("The average probability of success when doing 1,000,000
trials 10 times is:", average_prob_frame_6))
Hope this helps,
Rui Barradas
Às 12:14 de 24/04/2022, Paul Bernal escreveu:
> Dear Rui,
>
> There is a package called dice, that package is the one I am
using. This
> package has a función called dice.
>
> Best,
>
> Paul
>
> El El dom, 24 de abr. de 2022 a la(s) 4:43 a. m., Rui Barradas
> <ruipbarra...@sapo.pt <mailto:ruipbarra...@sapo.pt>
<mailto:ruipbarra...@sapo.pt <mailto:ruipbarra...@sapo.pt>>> escribió:
>
> Hello,
>
> I'm having trouble running the code, where does function dice
come from?
> CRAN package dice only has two functions,
>
> getEventProb
> getSumProbs
>
> not a function dice.
>
> Can you post a link to where the package/function can be found?
>
> Rui Barradas
>
>
> Às 02:00 de 24/04/2022, Paul Bernal escreveu:
> > Dear R friends,
> >
> > Hope you are doing great. The reason why I am contacting
you all, is
> > because the code I am sharing with you takes forever. It
started
> running at
> > 2:00 AM today, and it's 7:52 PM and is still running (see
code at
> the end
> > of this mail).
> >
> > I am using Rx64 4.1.2, and the code is being executed in
> RStudio. The
> > RStudio version I am currently using is Version 2022.02.0
Build 443
> > "Prairie Trillium" Release (9f796939, 2022-02-16) for Windows.
> >
> > My PC specs:
> > Processor: Intel(R) Core(TM) i5-10310U CPU @ 1.70 GHz
> > Installed RAM: 16.0 GB (15.6 GB usable)
> > System type: 64-bit operating system, x64-based processor
> > Local Disc(C:) Free Space: 274 GB
> >
> > I am wondering if there is/are a set of system variable(s) or
> something I
> > could do to improve the performance of the program.
> >
> > It is really odd this code has taken this much (and it is
still
> running).
> >
> > Any help and/or guidance would be greatly appreciated.
> >
> > Best regards,
> > Paul
> >
> >
> >
> >
> > #performing 1,000,000 simulations 10 times
> > num_trials_6 = 1000000
> > dice_rolls_6 = num_trials_6*12
> > num_dice_6 = 1
> > dice_sides_6 = 6
> >
> > prob_frame_6 <- data.frame(matrix(ncol = 10, nrow = 1))
> >
> > k <- 0
> > while(k < 10){
> > dice_simul_6 = data.frame(dice(rolls = dice_rolls_6,
ndice =
> num_dice_6,
> > sides = dice_sides_6, plot.it <http://plot.it>
<http://plot.it <http://plot.it>> = FALSE))
> >
> > #constructing matrix containing results of all dice
rolls by month
> > prob_matrix_6 <- data.frame(matrix(dice_simul_6[,1], ncol =
> 12, byrow =
> > TRUE))
> >
> > #naming each column by it's corresponding month name
> > colnames(prob_matrix_6) <-
> >
>
c("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec")
> >
> >
> > #assigning each person´s name depending on the number
showed
> in the dice
> > once rolled
> > for (i in 1:nrow(prob_matrix_6)){
> > for (j in 1:ncol(prob_matrix_6)){
> > if (prob_matrix_6[i,j] == 1){
> > prob_matrix_6[i,j] = "Alice"
> > }
> > if (prob_matrix_6[i,j] == 2){
> > prob_matrix_6[i,j] = "Bob"
> > }
> > if (prob_matrix_6[i,j] == 3){
> > prob_matrix_6[i,j] = "Charlie"
> > }
> > if (prob_matrix_6[i,j] == 4){
> > prob_matrix_6[i,j] = "Don"
> > }
> > if (prob_matrix_6[i,j] == 5){
> > prob_matrix_6[i,j] = "Ellen"
> > }
> > if (prob_matrix_6[i,j] == 6){
> > prob_matrix_6[i,j] = "Fred"
> > }
> >
> > }
> > }
> >
> > #calculating column which will have a 1 if trial was
> successful and a 0
> > otherwise
> > prob_matrix_6['success'] <- for (i in
1:nrow(prob_matrix_6)){
> > if (("Alice" %in% prob_matrix_6[i,]) & ("Bob" %in%
> prob_matrix_6[i,]) &
> > ("Charlie" %in% prob_matrix_6[i,]) & ("Don" %in%
prob_matrix_6[i,]) &
> > ("Ellen" %in% prob_matrix_6[i,]) & ("Fred" %in%
prob_matrix_6[i,])){
> > prob_matrix_6[i,13] = 1
> > }else{
> > prob_matrix_6[i,13] = 0
> > }
> > }
> >
> > #relabeling column v13 so that its new name is success
> > colnames(prob_matrix_6)[13] <- "success"
> >
> >
> > #calculating probability of success
> >
> > p6 = sum(prob_matrix_6$success)/nrow(prob_matrix_6)
> > prob_frame_6 <- cbind(prob_frame_6, p6)
> >
> > k = k + 1
> >
> > }
> >
> > prob_frame_6 <- prob_frame_6[11:20]
> > colnames(prob_frame_6) <-
> > c("p1","p2","p3","p4","p5","p6","p7","p8","p9","p10")
> > average_prob_frame_6 <- rowMeans(prob_frame_6)
> > trial_1000000_10_frame <- cbind(prob_frame_6,
average_prob_frame_6)
> > final_frame_6 <- trial_1000000_10_frame
> > colnames(final_frame_6) <-
> > c("p1","p2","p3","p4","p5","p6","p7","p8","p9","p10",
> "avg_prob_frame_5")
> >
> > write.csv(final_frame_6,
"OneMillion_Trials_Ten_Times_Results.csv")
> > print(final_frame_6)
> > print(paste("The average probability of success when doing
> 1,000,000 trials
> > 10 times is:", average_prob_frame_6))
> >
> > [[alternative HTML version deleted]]
> >
> > ______________________________________________
> > R-help@r-project.org <mailto:R-help@r-project.org>
<mailto:R-help@r-project.org <mailto:R-help@r-project.org>> mailing list
> -- To UNSUBSCRIBE and more, see
> > https://stat.ethz.ch/mailman/listinfo/r-help
<https://stat.ethz.ch/mailman/listinfo/r-help>
> <https://stat.ethz.ch/mailman/listinfo/r-help
<https://stat.ethz.ch/mailman/listinfo/r-help>>
> > PLEASE do read the posting guide
> http://www.R-project.org/posting-guide.html
<http://www.R-project.org/posting-guide.html>
> <http://www.R-project.org/posting-guide.html
<http://www.R-project.org/posting-guide.html>>
> > and provide commented, minimal, self-contained,
reproducible code.
>