最近在学go, 按照入门指南学完go的基础语法, 开始学习go的标准库;  借用生成这个小任务复习一下go的基础语法.

推荐go编辑, jb公司的goland, 超级好用.

推荐go入门指南, https://tour.go-zh.org/list

package main

import (
    "fmt"
    "math/rand"
    "sync"
)

func main() {
    //fmt.Println("random: ", rand.Intn(100))
    res := Example(, )
    ; i<len(res); i++ {
        fmt.Println(i+,res[i])
    }
}

/**
len: 长度
max: 个数
随机生成长度为len的max个纯数字随机数
 */
func Example(length int, max int) []string{
    // Seeding with the same value results in the same random sequence each run.
    // For different numbers, seed with a different value, such as
    // time.Now().UnixNano(), which yields a constantly-changing number.
    //rand.Seed(42)

    digitNumber := []string {
        ",
        ",
        ",
        ",
        ",
        ",
        ",
        ",
        ",
        ",
    }
    // 用make创建map

    set := New()
    for ; set.Len() < max ;  {
        ranNumber := ""
        ; j<length; j++ {
            ranNumber += digitNumber[rand.Intn(len(digitNumber))]
        }
        if !set.Has(ranNumber){
            set.Add(ranNumber)
        }
    }

    return set.List()

}

/**
构造set类型
 */
type Set struct {
    m map[string]bool
    sync.RWMutex
}

func New() *Set {
    return &Set{
        m: map[string]bool{},
    }
}

func (s *Set) Add(item string) {
    s.Lock()
    defer s.Unlock()
    s.m[item] = true
}

func (s *Set) Remove(item string) {
    s.Lock()
    s.Unlock()
    delete(s.m, item)
}

func (s *Set) Has(item string) bool {
    s.RLock()
    defer s.RUnlock()
    _, ok := s.m[item]
    return ok
}

func (s *Set) Len() int {
    return len(s.List())
}

func (s *Set) Clear() {
    s.Lock()
    defer s.Unlock()
    s.m = map[string]bool{}
}

func (s *Set) IsEmpty() bool {
     {
        return true
    }
    return false
}

func (s *Set) List() []string {
    s.RLock()
    defer s.RUnlock()
    list := []string{}
    for item := range s.m {
        list = append(list, item)
    }
    return list
}

go生成不重复的纯数字6位的随机数的更多相关文章

  1. Mysql 生成不重复的随机数字

    在网上查找Mysql 生成不重复的随机数字 ,竟然没找到合适的例子. 其实思路很简单,利用MySQL现有的函数,然后进行加工处理,达到预期的结果.可以用到的MySQL函数为rand() ,以及 rou ...

  2. java中生成不重复随机的数字

    Java中产生随机数 1 . 调用java.lang下面Math类中的random()方法产生随机数 新建一个文件后缀名为java的文件,文件名取为MyRandom,该类中编写如下的代码: publi ...

  3. PHP随机生成不重复的8位卡号(数字)和卡密(字符串)

    一.生成不重复的随机数字,可自定义长度(最多支持10位数) /** * 生成不重复的随机数字(不能超过10位数,否则while循环陷入死循环) * @param int $start 需要生成的数字开 ...

  4. Java随机生成定长纯数字或数字字母混合数

    (转)Java随机生成定长纯数字或数字字母混合数 运行效果图: 具体实现代码

  5. php生成随机字符串可指定纯数字、纯字母或者混合的

    php 生成随机字符串 可以指定是纯数字 还是纯字母 或者混合的. 可以指定长度的. function rand_zifu($what,$number){ $string=''; for($i = 1 ...

  6. php生成纯数字、字母数字、图片、纯汉字的随机数验证码

    现在讲开始通过PHP生成各种验证码旅途,新手要开车了,请刷卡! 首先,我们开始先生成一个放验证码的背景图片 注:没有Imagejpg()这个函数,只有imagepng()函数 imagecreatet ...

  7. C#生成不重复的随机数(转)

    我们在做能自动生成试卷的考试系统时,常常需要随机生成一组不重复随机数的题目,在.net Framework中提供了一个专门用来产生随机数的类System.Random. 对于随机数,大家都知道,计算机 ...

  8. C#生成不重复的随机数

    在做能自动生成试卷的考试系统时,常常需要随机生成一组不重复的题目,在.net Framework中提供了一个专门用来产生随机数 http://www.jbxue.com/tags/suijishu.h ...

  9. [转载]C# Random 生成不重复随机数

    Random 类 命名空间:System 表示伪随机数生成器,一种能够产生满足某些随机性统计要求的数字序列的设备. 伪随机数是以相同的概率从一组有限的数字中选取的.所选数字并不具有完全的随机性,因为它 ...

随机推荐

  1. Win10环境下 HTTP 错误 500.19 - Internal Server Error 问题及其解决方法

    记一下今日份小bug... 明天要做软件架构实验了,今天打算测试下运行web项目,于是乎,找出了以前用JSP写的web项目测试运行不了,我再打开浏览器测试Tomcat服务器,在地址栏键入http:// ...

  2. SlidingMenu第二篇 --- SlidingMenu常用属性介绍

    /** * 设置滑动的屏幕范围 * 1. TOUCHMODE_MARGIN 设置为全屏边缘可滑动 * 2. TOUCHMODE_FULLSCREEN 设置为全屏区域都可以滑动 * 3. TOUCHMO ...

  3. MySQL复制表-CREATE SELECT

    假设存在以下Table: mysql> select * from staff; +----+----------+-------+ | id | name | slary | +----+-- ...

  4. MySQL文档翻译(八)附英文原文---性能优化概览

    优化概述 数据库性能表现依赖于数据库级别的几个因素,比如表,查询和配置设置.这些软件在硬件级别通过CPU和IO操作构筑结果,你需要尽可能的使用最少的资源达到最大的效果.当你专注于数据库的性能表现时,你 ...

  5. return -1 、return 1 、 return 0 的区别

    根据所定义函数的需求返回不同的值. 一般0和-1或者0和1使用 0和-1使用时: 0一般表示成功执行 -1一般表示不成功 0和1使用时: 1真 0假

  6. iOS SDWebImage知识点

    1.clear 和 clean clear 先把之前的缓存文件夹删除掉,然后新建一个文件夹 clean 先删除过期的文件,然后计算剩余缓存文件的大小 currentSize > maxSize, ...

  7. 第一次远程ubuntu用c写Hello Word出现的问题

    2019-03-26 21:48:48 之前已经学过c语言,但是一直是在win10上用VC++6.0来写代码的,现在想尝试在linux下用c语言 其实主要目的是来学习linux 1.问题: 在ubun ...

  8. python from entry to abandon4

    python from entry to abandon系列的收官之作    本篇博客将会介绍<简明Python教程>的最后四章内容.并在最后附上对于本书的个人评价和下阶段自学Python ...

  9. SpringBoot和druid数据源集成Jpa

    1.pom文件 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="htt ...

  10. 工具类封装之--BaseController

    package cn.xxx.base; import cn.xxx.gecustomer.beans.GeCustomer; import cn.xxx.gecustomer.beans.GeCus ...