R的亂數函數測試
本範例包含常用的亂數函數的處理,及產生動態維度的矩陣,並透過亂數函數取值
#反覆產生一組數列,並以矩陣方式回傳
#startNum : 數列起始值
#endNum : 數列結束值
#repeatCount : 重複次數
serial_number_fit_matrix <- function(startNum, endNum , repeatCount)
{
matrix_row <- (endNum - startNum) + 1
# rep(x:y , n) = 重複n次 x ~ y的數列
sequence <- rep(startNum : endNum , repeatCount)
# ncol = 橫 nrow = 直 data = vector data byrow = false 表示以Column的方向進行填滿
matrix_result <- matrix(data = sequence, nrow = repeatCount, ncol = matrix_row, byrow = FALSE)
print(typeof(matrix_result)) #integer
return(matrix_result)
}
#產生亂數組的客製函數
#type : 亂數類型
#count : 亂數數量
generate_random_type <- function(type, count)
{
#random用法參考https://blog.revolutionanalytics.com/2009/02/how-to-choose-a-random-number-in-r.html
if (type == "decimal") {
# runif(隨機數量,起始值,結尾值)
random <- runif(count , 1 , 100) #decimal number
}
else if (type == "int") {
# sample(數列1~100 , 隨機數量 , 是否重覆)
random <- sample(1:100 , count , replace = FALSE) # replace = TRUE 表示可重複
}
else if(type == "matrix")
{
result <- serial_number_fit_matrix(1 , 30 , 3)
#同上
random <- sample(result , count , replace = FALSE)
}
return(random)
}
matrix_result <- serial_number_fit_matrix(100 , 110 , 5)
matrix_result # matrix 顯示
matrix_result[3,6] #matrix 取值
generate_random_type("decimal",6)
generate_random_type("int",5)
generate_random_type("matrix",3)
測試結果如下圖:
>
> matrix_result <- serial_number_fit_matrix(100 , 110 , 5)
[1] "integer"
> matrix_result # matrix 顯示
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11]
[1,] 100 105 110 104 109 103 108 102 107 101 106
[2,] 101 106 100 105 110 104 109 103 108 102 107
[3,] 102 107 101 106 100 105 110 104 109 103 108
[4,] 103 108 102 107 101 106 100 105 110 104 109
[5,] 104 109 103 108 102 107 101 106 100 105 110
> matrix_result[3,6] #matrix 取值
[1] 105
>
> generate_random_type("decimal",6)
[1] 1.360053 32.656129 25.631342 47.354193 15.697342 65.333018
> generate_random_type("int",5)
[1] 97 16 4 14 67
> generate_random_type("matrix",3)
[1] "integer"
[1] 5 28 25
>