-1
我在想如何創建一個隨機自然數的矩陣,但每列的總和等於每行和對角線總和的總和。生成隨機幻方
我的意思是你創建一個函數,通過選擇行和列的總和,列和對角線給你一個方形矩陣如上所述,但每行和每列有不同的數字。
有沒有人知道如何做到這一點?
我想自己創建一個函數,而不需要任何包來完全理解程序。
我在想如何創建一個隨機自然數的矩陣,但每列的總和等於每行和對角線總和的總和。生成隨機幻方
我的意思是你創建一個函數,通過選擇行和列的總和,列和對角線給你一個方形矩陣如上所述,但每行和每列有不同的數字。
有沒有人知道如何做到這一點?
我想自己創建一個函數,而不需要任何包來完全理解程序。
您可以使用一個名爲magic
包:
library(magic)
magic(4)
輸出看起來是這樣的:
# [,1] [,2] [,3] [,4]
# [1,] 1 12 8 13
# [2,] 15 6 10 3
# [3,] 14 7 11 2
# [4,] 4 9 5 16
你不能決定什麼是對矩陣的總和。它將是:
。
其中「n」是矩陣的維數。
但你可以乘以一個數字(最好是一個整數)。
有用的鏈接:What is Magic Square?
如果你想弄清楚magic
函數如何工作,你可以使用它並逐步深入;
>functionBody(magic)
# {
# if (length(n) > 1) {
# return(sapply(n, match.fun(sys.call()[[1]])))
# }
# n <- round(n)
# if (n == 2) {
# stop("Normal magic squares of order 2 do not exist")
# }
# if (n%%2 == 1) {
# return(as.standard(magic.2np1(floor(n/2))))
# }
# if (n%%4 == 0) {
# return(as.standard(magic.4n(round(n/4))))
# }
# if (n%%4 == 2) {
# return(as.standard(magic.4np2(round((n - 2)/4))))
# }
# stop("This cannot happen")
# }
您需要查看上面出現的其他函數以全面瞭解過程。
噢謝謝你我不知道那個功能人.. –
如果每列的總和是每行的總和,那麼很多數字都依賴於其他數字,並且不能是隨機的 – HubertL
您是在談論[magic square](https://en.wikipedia.org/維基/ Magic_square)?查看維基百科文章,瞭解構建技巧。 – MrFlick
'magic :: magic(4)' – Masoud