Hello, Thanks for the link, the package is TeachingDemos, it's the function that's named dice. And the source code shows that it calls sample() in a way similar to mine, so the code I posted should give approximately the same results. To run just once, change to K <- 1L, right before the main for loop. Hope this helps, Rui Barradas ?s 15:24 de 24/04/2022, Paul Bernal escreveu:> 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 (<ruipbarradas at sapo.pt > <mailto:ruipbarradas at 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 > > <ruipbarradas at sapo.pt <mailto:ruipbarradas at sapo.pt> > <mailto:ruipbarradas at sapo.pt <mailto:ruipbarradas at 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 at r-project.org <mailto:R-help at r-project.org> > <mailto:R-help at r-project.org <mailto:R-help at 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. > > >