持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第20天,点击查看活动详情
一、数组复杂使用 - 数组反转
要求: 随机生成五个数,并将其反转打印
通过找规律反转【思路分析】
package main
import (
"fmt"
"math/rand"
"time"
)
func main() {
// 思路:
// 1. 随机生成五个数,rang.Intn() 函数
// 2. 当我们得到随机数后,就放到一个数组 int 数组
// 3. 将其反转打印
var intArr3 [5]int
// 为了每次生成的随机数不一样,我们需要给一个 seed 值
rand.Seed(time.Now().Unix())
for i := 0; i < len(intArr3); i++ {
intArr3[i] = rand.Intn(100)
}
fmt.Println("交换前 = ", intArr3)
// 反转打印,交换的次数是 len / 2 ,倒数第一和第一个元素交换,倒数第2个和第2个元素交换
temp := 0 //做一个临时变量
for i := 0; i < len(intArr3)/2; i++ {
temp = intArr3[len(intArr3)-1-i]
intArr3[len(intArr3)-1-i] = intArr3[i]
intArr3[i] = temp
}
fmt.Println("交换后 = ", intArr3)
}
package main
import (
"fmt"
"math/rand"
"time"
)
func main() {
// 思路:
// 1. 随机生成五个数,rang.Intn() 函数
// 2. 当我们得到随机数后,就放到一个数组 int 数组
// 3. 将其反转打印
var intArr3 [5]int
// 为了每次生成的随机数不一样,我们需要给一个 seed 值
lens := len(intArr3)
rand.Seed(time.Now().Unix())
for i := 0; i < lens; i++ {
intArr3[i] = rand.Intn(100)
}
fmt.Println("交换前 = ", intArr3)
// 反转打印,交换的次数是 len / 2 ,倒数第一和第一个元素交换,倒数第2个和第2个元素交换
temp := 0 //做一个临时变量
for i := 0; i < lens/2; i++ {
temp = intArr3[len(intArr3)-1-i]
intArr3[len(intArr3)-1-i] = intArr3[i]
intArr3[i] = temp
}
fmt.Println("交换后 = ", intArr3)
}
拓展
package main
import (
"fmt"
"math/rand"
)
func main() {
// 思路:
// 1. 随机生成五个数,rang.Intn() 函数
// 2. 当我们得到随机数后,就放到一个数组 int 数组
// 3. 将其反转打印
var intArr3 [5]int
for i := 0; i < len(intArr3); i++ {
intArr3[i] = rand.Intn(100)
}
fmt.Println(intArr3)
}
对上面代码的总结:
- 为什么生成的随机数都是一个固定的值????
func (*Rand) Seed:你给的这个种子Seed是一个固定值,所以生成的随机数也是固定值。- 引入时间函数,生成随机种子数
package main
import (
"fmt"
"math/rand"
"time"
)
func main() {
// 思路:
// 1. 随机生成五个数,rang.Intn() 函数
// 2. 当我们得到随机数后,就放到一个数组 int 数组
// 3. 将其反转打印
var intArr3 [5]int
// 为了每次生成的随机数不一样,我们需要给一个 seed 值
rand.Seed(time.Now().Unix())
for i := 0; i < len(intArr3); i++ {
intArr3[i] = rand.Intn(100)
}
fmt.Println(intArr3)
}