├── .gitignore ├── g └── g.go ├── multi_gen.bat ├── main.go └── multi_gen.sh /.gitignore: -------------------------------------------------------------------------------- 1 | result 2 | *.swp 3 | *.exe 4 | -------------------------------------------------------------------------------- /g/g.go: -------------------------------------------------------------------------------- 1 | package g 2 | 3 | var DiCnt int = 10000 4 | var NumMin int = 20 5 | var NumMax int = 30 6 | var NumDiff int = 10 7 | 8 | var Dir string = "result" 9 | -------------------------------------------------------------------------------- /multi_gen.bat: -------------------------------------------------------------------------------- 1 | randgen.exe 500-700 10000 jiyis/ji_yi_01 2 | randgen.exe 500-700 10000 jiyis/ji_yi_02 3 | randgen.exe 500-700 10000 jiyis/ji_yi_03 4 | randgen.exe 500-700 10000 jiyis/ji_yi_04 5 | randgen.exe 500-700 10000 jiyis/ji_yi_05 6 | randgen.exe 500-700 10000 jiyis/ji_yi_06 7 | randgen.exe 500-700 10000 jiyis/ji_yi_07 8 | randgen.exe 500-700 10000 jiyis/ji_yi_08 9 | randgen.exe 500-700 10000 jiyis/ji_yi_09 10 | randgen.exe 500-700 10000 jiyis/ji_yi_10 11 | randgen.exe 500-700 10000 jiyis/ji_yi_11 12 | randgen.exe 500-700 10000 jiyis/ji_yi_12 13 | randgen.exe 500-700 10000 jiyis/ji_yi_13 14 | randgen.exe 500-700 10000 jiyis/ji_yi_14 15 | randgen.exe 500-700 10000 jiyis/ji_yi_15 16 | randgen.exe 500-700 10000 jiyis/ji_yi_16 17 | randgen.exe 500-700 10000 jiyis/ji_yi_17 18 | randgen.exe 500-700 10000 jiyis/ji_yi_18 19 | randgen.exe 500-700 10000 jiyis/ji_yi_19 20 | randgen.exe 500-700 10000 jiyis/ji_yi_20 21 | 22 | 23 | -------------------------------------------------------------------------------- /main.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "fmt" 5 | "github.com/ulricqin/goutils/filetool" 6 | "github.com/ulricqin/randgen/g" 7 | "math/rand" 8 | "os" 9 | "path/filepath" 10 | // "sort" 11 | "strconv" 12 | "strings" 13 | "time" 14 | ) 15 | 16 | func main() { 17 | 18 | var err error 19 | 20 | argc := len(os.Args) 21 | if argc >= 2 { 22 | // randgen 20-49 [9999] 23 | scope := os.Args[1] 24 | scopeArr := strings.Split(scope, "-") 25 | if len(scopeArr) != 2 { 26 | usage() 27 | return 28 | } 29 | 30 | g.NumMin, err = strconv.Atoi(scopeArr[0]) 31 | if err != nil { 32 | fmt.Printf("parse input fail. error: %s\n", err) 33 | return 34 | } 35 | 36 | g.NumMax, err = strconv.Atoi(scopeArr[1]) 37 | if err != nil { 38 | fmt.Printf("parse input fail. error: %s\n", err) 39 | return 40 | } 41 | 42 | } 43 | 44 | g.NumDiff = g.NumMax - g.NumMin 45 | 46 | if argc >= 3 { 47 | // randgen 20-49 9999 48 | g.DiCnt, err = strconv.Atoi(os.Args[2]) 49 | if err != nil { 50 | fmt.Printf("parse di cnt fail. error: %s\n", err) 51 | return 52 | } 53 | } 54 | 55 | if argc >= 4 { 56 | // handle result dir 57 | g.Dir = os.Args[3] 58 | } 59 | 60 | fmt.Printf("argument>>> di-cnt: %d, num-scope: [%d-%d], result-dir: %s\n", g.DiCnt, g.NumMin, g.NumMax, g.Dir) 61 | generate() 62 | } 63 | 64 | func usage() { 65 | fmt.Println(` 66 | USAGE: e.g. randgen 20-30 9999 ./result`) 67 | } 68 | 69 | func generate() { 70 | // 在result-dir下生成一万个txt文件 71 | fmt.Printf("generating...") 72 | 73 | err := filetool.InsureDir(g.Dir) 74 | if err != nil { 75 | fmt.Printf("create dir: %s fail. error: %s\n", g.Dir, err) 76 | return 77 | } 78 | 79 | for i := 0; i < g.DiCnt; i++ { 80 | filename := fmt.Sprintf("%04d.txt", i) 81 | if e := genOneFile(filename, int64(i)+time.Now().UnixNano()); e != nil { 82 | fmt.Printf("genOneFile fail. error: %s", e) 83 | break 84 | } 85 | } 86 | 87 | fmt.Println("done") 88 | 89 | } 90 | 91 | func genOneFile(filename string, seed int64) (err error) { 92 | r := rand.New(rand.NewSource(seed)) 93 | numCnt := r.Intn(g.NumDiff) + g.NumMin 94 | 95 | // 生成numCnt个数字,写入filename,数字注意格式化 96 | m := make(map[int]bool) 97 | i := 0 98 | for { 99 | a := r.Intn(1000) 100 | if _, ok := m[a]; !ok { 101 | m[a] = true 102 | i++ 103 | if i == numCnt { 104 | break 105 | } 106 | } 107 | } 108 | 109 | size := len(m) 110 | j := 0 111 | keys := make([]int, size) 112 | for k, _ := range m { 113 | keys[j] = k 114 | j++ 115 | } 116 | 117 | // sort.Ints(keys) 118 | 119 | nums := make([]string, size) 120 | for k := 0; k < size; k++ { 121 | nums[k] = fmt.Sprintf("%03d\r\n", keys[k]) 122 | } 123 | 124 | f := filepath.Join(g.Dir, filename) 125 | _, err = filetool.WriteStringToFile(f, strings.Join(nums, "")) 126 | 127 | return 128 | } 129 | -------------------------------------------------------------------------------- /multi_gen.sh: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env bash 2 | 3 | # duo_yuan_1 4 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_1/ji_yi_1 5 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_1/ji_yi_2 6 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_1/ji_yi_3 7 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_1/ji_yi_4 8 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_1/ji_yi_5 9 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_1/ji_yi_6 10 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_1/ji_yi_7 11 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_1/ji_yi_8 12 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_1/ji_yi_9 13 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_1/ji_yi_10 14 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_1/ji_yi_11 15 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_1/ji_yi_12 16 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_1/ji_yi_13 17 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_1/ji_yi_14 18 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_1/ji_yi_15 19 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_1/ji_yi_16 20 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_1/ji_yi_17 21 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_1/ji_yi_18 22 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_1/ji_yi_19 23 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_1/ji_yi_20 24 | 25 | 26 | # duo_yuan_2 27 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_2/ji_yi_1 28 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_2/ji_yi_2 29 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_2/ji_yi_3 30 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_2/ji_yi_4 31 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_2/ji_yi_5 32 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_2/ji_yi_6 33 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_2/ji_yi_7 34 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_2/ji_yi_8 35 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_2/ji_yi_9 36 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_2/ji_yi_10 37 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_2/ji_yi_11 38 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_2/ji_yi_12 39 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_2/ji_yi_13 40 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_2/ji_yi_14 41 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_2/ji_yi_15 42 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_2/ji_yi_16 43 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_2/ji_yi_17 44 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_2/ji_yi_18 45 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_2/ji_yi_19 46 | 47 | # duo_yuan_3 48 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_3/ji_yi_1 49 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_3/ji_yi_2 50 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_3/ji_yi_3 51 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_3/ji_yi_4 52 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_3/ji_yi_5 53 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_3/ji_yi_6 54 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_3/ji_yi_7 55 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_3/ji_yi_8 56 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_3/ji_yi_9 57 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_3/ji_yi_10 58 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_3/ji_yi_11 59 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_3/ji_yi_12 60 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_3/ji_yi_13 61 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_3/ji_yi_14 62 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_3/ji_yi_15 63 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_3/ji_yi_16 64 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_3/ji_yi_17 65 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_3/ji_yi_18 66 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_3/ji_yi_19 67 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_3/ji_yi_20 68 | 69 | # duo_yuan_4 70 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_4/ji_yi_1 71 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_4/ji_yi_2 72 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_4/ji_yi_3 73 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_4/ji_yi_4 74 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_4/ji_yi_5 75 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_4/ji_yi_6 76 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_4/ji_yi_7 77 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_4/ji_yi_8 78 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_4/ji_yi_9 79 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_4/ji_yi_10 80 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_4/ji_yi_11 81 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_4/ji_yi_12 82 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_4/ji_yi_13 83 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_4/ji_yi_14 84 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_4/ji_yi_15 85 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_4/ji_yi_16 86 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_4/ji_yi_17 87 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_4/ji_yi_18 88 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_4/ji_yi_19 89 | 90 | # duo_yuan_5 91 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_5/ji_yi_1 92 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_5/ji_yi_2 93 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_5/ji_yi_3 94 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_5/ji_yi_4 95 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_5/ji_yi_5 96 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_5/ji_yi_6 97 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_5/ji_yi_7 98 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_5/ji_yi_8 99 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_5/ji_yi_9 100 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_5/ji_yi_10 101 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_5/ji_yi_11 102 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_5/ji_yi_12 103 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_5/ji_yi_13 104 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_5/ji_yi_14 105 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_5/ji_yi_15 106 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_5/ji_yi_16 107 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_5/ji_yi_17 108 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_5/ji_yi_18 109 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_5/ji_yi_19 110 | ./randgen 5-15 10000 ~/caipiao_data/duo_yuan_5/ji_yi_20 111 | 112 | 113 | --------------------------------------------------------------------------------