内容简介:本文为转载,原文:Golang中的一些常用的简单算法, 包括抢红包算法,洗牌算法等洗牌算法,即将原来的顺序打乱,组成新的随机排序的顺序。
本文为转载,原文: Golang中的一些常用的简单算法
Golang
介绍
Golang中的一些常用的简单算法, 包括抢红包算法,洗牌算法等
1. 洗牌算法
洗牌算法,即将原来的顺序打乱,组成新的随机 排序 的顺序。
以下示例中以int切片为例给出一个简单算法:
import ( "fmt" "math/rand" "time" ) func main() { intArr := []int{1,2,3,4,5,6,7,8,9} for i := 0; i < 10; i++{ shuffle(intArr) fmt.Println(intArr) } } // 洗牌算法 func shuffle(arr []int){ rand.Seed(time.Now().UnixNano()) var i, j int var temp int for i = len(arr) - 1; i > 0; i-- { j = rand.Intn(i + 1) temp = arr[i] arr[i] = arr[j] arr[j] = temp } }
测试结果
测试结果
2. 抢红包算法
抢红包算法即类似微信拼手气红包,发一定金额的红包,指定人数抢红包。
以下给出一个简单的算法示例:
import ( "fmt" "math/rand" "time" ) func main() { for i := 0; i < 10; i ++{ redPackage(10, 500) fmt.Println("") } } // 随机红包 // remainCount: 剩余红包数 // remainMoney: 剩余红包金额(单位:分) func randomMoney(remainCount, remainMoney int)int{ if remainCount == 1{ return remainMoney } rand.Seed(time.Now().UnixNano()) var min = 1 max := remainMoney / remainCount * 2 money := rand.Intn(max) + min return money } // 发红包 // count: 红包数量 // money: 红包金额(单位:分) func redPackage(count, money int) { for i := 0; i < count; i++ { m := randomMoney(count - i, money) fmt.Printf("%d ", m) money -= m } }
测试结果:
测试结果
完
本文为原创,转载请注明出处: Golang中的一些常用的简单算法
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Learn Python the Hard Way
Zed Shaw / Example Product Manufacturer / 2011
This is a very beginner book for people who want to learn to code. If you can already code then the book will probably drive you insane. It's intended for people who have no coding chops to build up t......一起来看看 《Learn Python the Hard Way》 这本书的介绍吧!