Golang中的一些常用的简单算法

栏目: Go · 发布时间: 6年前

内容简介:本文为转载,原文:Golang中的一些常用的简单算法, 包括抢红包算法,洗牌算法等洗牌算法,即将原来的顺序打乱,组成新的随机排序的顺序。

本文为转载,原文: 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
    }
}

测试结果

Golang中的一些常用的简单算法

测试结果

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中的一些常用的简单算法

测试结果

本文为原创,转载请注明出处: Golang中的一些常用的简单算法


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Learn Python the Hard Way

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》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

随机密码生成器
随机密码生成器

多种字符组合密码