golang 生成横向纵向不一致的矩阵
在 Go 语言中生成一个非方阵(即横向和纵向维度不一致的矩阵),可以使用切片来实现。以下是一个示例程序,用于创建一个 m x n 的矩阵(m 行 n 列),并且可以使用不同的值来初始化矩阵中的元素。
示例程序
go
package main import ( "fmt" ) // 创建一个 m 行 n 列的矩阵 func createMatrix(m, n int) [][]int { matrix := make([][]int, m) for i := range matrix { matrix[i] = make([]int, n) } return matrix } func main() { m := 3 // 行数 n := 4 // 列数 matrix := createMatrix(m, n) // 初始化矩阵元素 for i := 0; i < m; i++ { for j := 0; j < n; j++ { matrix[i][j] = i * n + j // 可以根据需要更改初始化逻辑 } } /* for i, data := range direction { for j , m:=range transverse { //matrix[i][j] = e.TakeTheCross(data.MaterialTypecode,data.MaterialCode,m.ProcessCode,m.ProductCode,cbamActivityData) // 可以根据需要更改初始化逻辑 if data.ProcessCode+data.ProductCode==m.ProcessCode+m.ProductCode{ matrix[i][j] = data.MatrixValue // 可以根据需要更改初始化逻辑 }else if data.MaterialTypecode+data.MaterialCode==m.MaterialTypecode+m.MaterialCode{ matrix[i][j] = m.MatrixValue // 可以根据需要更改初始化逻辑 }else{ matrix[i][j] = 0 // 可以根据需要更改初始化逻辑 } fmt.Println(data.ProcessCode+data.ProductCode,data.MaterialTypecode+data.MaterialCode,matrix[i][j]) } }*/ // 打印矩阵 for _, row := range matrix { fmt.Println(row) } }
在这个示例中,我们首先定义了一个函数 createMatrix,它接收两个参数 m 和 n,分别代表矩阵的行数和列数。该函数创建了一个 m 行 n 列的矩阵,并将其每个元素初始化为零。
然后,在 main 函数中,我们调用了 createMatrix 函数来创建矩阵,并通过循环来初始化矩阵中的每个元素。这里的初始化逻辑是将每个元素设置为其所在行号与列号的一个组合值,但这可以根据实际应用的需求进行修改。
如果你希望矩阵中的元素是随机生成的,可以使用 math/rand 包来生成随机数。以下是修改后的示例:
go
package main import ( "fmt" "math/rand" "time" ) func createRandomMatrix(m, n int) [][]int { rand.Seed(time.Now().UnixNano()) // 设置随机种子 matrix := make([][]int, m) for i := range matrix { matrix[i] = make([]int, n) for j := range matrix[i] { matrix[i][j] = rand.Intn(100) // 生成 0 到 99 之间的随机整数 } } return matrix } func main() { m := 3 // 行数 n := 4 // 列数 matrix := createRandomMatrix(m, n) // 打印矩阵 for _, row := range matrix { fmt.Println(row) } }
在这个版本中,我们首先设置了随机数生成器的种子,然后在创建矩阵后填充每个元素时使用 rand.Intn(100) 生成一个介于 0 到 99 之间的随机整数。这将使得矩阵中的每个元素都是随机的。