Reputation: 13
I made a random simulation of Roulette
set.seed(101)
n=10000
black <- sample("black",size=n, replace=TRUE)
red <- sample("red",size=n, replace=TRUE)
green <- sample("green",size=n, replace=TRUE)
roulette_table=matrix(NaN,n,1)
for (i in 1:n) {
temp = runif(1, 0, 1) # uniform between 0 and 1
# determines the probability
if (temp<0.04) {
roulette_table [i,1]=green[i]
} else if (temp>0.04 & temp<0.52) {
roulette_table[i,1]=red[i]
} else {
roulette_table[i,1]=black[i]
}
}
How can i count the frequency of repeating characters ? Thanks
Upvotes: 0
Views: 115
Reputation: 76460
This is a much better way of running the same simulation. It is fully vectorized and much simpler and readable.
set.seed(101)
colrs <- c("green", "red", "black")
u <- runif(n, 0, 1)
i <- findInterval(u, c(0, 0.04, 0.52, Inf))
roultab <- matrix(colrs[i], ncol = 1)
identical(roulette_table, roultab)
#[1] TRUE
Then use the code in @akrun's answer.
out <- rle(c(roultab))
out1 <- setNames(out$lengths, out$values)
Upvotes: 2
Reputation: 887223
We can use rle
out <- rle(roulette_table[,1])
out1 <- setNames(out$lengths, out$values)
head(out1)
# red black red black red black
# 1 3 2 3 5 8
Upvotes: 2