[R]常用亂數函數的數組產生測試

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
>