Golang編程實(shí)現(xiàn)生成n個(gè)從a到b不重復(fù)隨機(jī)數(shù)的方法
更新時(shí)間:2017年01月30日 11:17:07 作者:books1958
這篇文章主要介紹了Golang編程實(shí)現(xiàn)生成n個(gè)從a到b不重復(fù)隨機(jī)數(shù)的方法,結(jié)合實(shí)例形式分析了Go語言字符串操作及隨機(jī)數(shù)生成的相關(guān)操作技巧,需要的朋友可以參考下
本文實(shí)例講述了Golang編程實(shí)現(xiàn)生成n個(gè)從a到b不重復(fù)隨機(jī)數(shù)的方法。分享給大家供大家參考,具體如下:
代碼很簡單:
復(fù)制代碼 代碼如下:
package test
import (
"fmt"
"math/rand"
"time"
)
//生成若干個(gè)不重復(fù)的隨機(jī)數(shù)
func RandomTestBase() {
//測(cè)試5次
for i := 0; i < 5; i++ {
nums := generateRandomNumber(10, 30, 10)
fmt.Println(nums)
}
}
//生成count個(gè)[start,end)結(jié)束的不重復(fù)的隨機(jī)數(shù)
func generateRandomNumber(start int, end int, count int) []int {
//范圍檢查
if end < start || (end-start) < count {
return nil
}
//存放結(jié)果的slice
nums := make([]int, 0)
//隨機(jī)數(shù)生成器,加入時(shí)間戳保證每次生成的隨機(jī)數(shù)不一樣
r := rand.New(rand.NewSource(time.Now().UnixNano()))
for len(nums) < count {
//生成隨機(jī)數(shù)
num := r.Intn((end - start)) + start
//查重
exist := false
for _, v := range nums {
if v == num {
exist = true
break
}
}
if !exist {
nums = append(nums, num)
}
}
return nums
}
import (
"fmt"
"math/rand"
"time"
)
//生成若干個(gè)不重復(fù)的隨機(jī)數(shù)
func RandomTestBase() {
//測(cè)試5次
for i := 0; i < 5; i++ {
nums := generateRandomNumber(10, 30, 10)
fmt.Println(nums)
}
}
//生成count個(gè)[start,end)結(jié)束的不重復(fù)的隨機(jī)數(shù)
func generateRandomNumber(start int, end int, count int) []int {
//范圍檢查
if end < start || (end-start) < count {
return nil
}
//存放結(jié)果的slice
nums := make([]int, 0)
//隨機(jī)數(shù)生成器,加入時(shí)間戳保證每次生成的隨機(jī)數(shù)不一樣
r := rand.New(rand.NewSource(time.Now().UnixNano()))
for len(nums) < count {
//生成隨機(jī)數(shù)
num := r.Intn((end - start)) + start
//查重
exist := false
for _, v := range nums {
if v == num {
exist = true
break
}
}
if !exist {
nums = append(nums, num)
}
}
return nums
}
輸出結(jié)果:
[12 20 18 19 21 28 15 13 11 10] [28 15 12 10 20 18 16 24 27 17] [25 28 29 19 21 12 16 13 11 15] [27 20 19 23 18 13 21 24 12 26] [19 10 27 18 28 12 22 14 16 26]
希望本文所述對(duì)大家Go語言程序設(shè)計(jì)有所幫助。
相關(guān)文章
基于Golang?container/list實(shí)現(xiàn)LRU緩存
Least?Recently?Used?(LRU)?,即逐出最早使用的緩存,這篇文章主要為大家介紹了如何基于Golang?container/list實(shí)現(xiàn)LRU緩存,感興趣的可以了解下2023-08-08
Golang實(shí)現(xiàn)文件夾的創(chuàng)建與刪除的方法詳解
這篇文章主要介紹了如何利用Go語言實(shí)現(xiàn)對(duì)文件夾的常用操作:創(chuàng)建于刪除。文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2022-05-05
Golang使用Apache PLC4X連接modbus的示例代碼
Modbus是一種串行通信協(xié)議,是Modicon公司于1979年為使用可編程邏輯控制器(PLC)通信而發(fā)表,這篇文章主要介紹了Golang使用Apache PLC4X連接modbus的示例代碼,需要的朋友可以參考下2024-07-07
golang中sync.Map并發(fā)創(chuàng)建、讀取問題實(shí)戰(zhàn)記錄
這篇文章主要給大家介紹了關(guān)于golang中sync.Map并發(fā)創(chuàng)建、讀取問題的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-07-07

