allows user to specify max for rand
This commit is contained in:
parent
5ec66c2c1e
commit
f351a7d6c8
17
main.go
17
main.go
@ -2,7 +2,9 @@ package main
|
||||
|
||||
import (
|
||||
"container/heap"
|
||||
"flag"
|
||||
"fmt"
|
||||
"math"
|
||||
"math/rand"
|
||||
"os"
|
||||
"sort"
|
||||
@ -12,8 +14,12 @@ import (
|
||||
|
||||
const usage = "smerge [count, count, ... count]"
|
||||
|
||||
var max = flag.Int("max", 1000, "maximum random number for each source")
|
||||
|
||||
func main() {
|
||||
args := os.Args[1:]
|
||||
flag.Parse()
|
||||
|
||||
args := flag.Args()
|
||||
if len(args) < 1 {
|
||||
fmt.Fprintf(os.Stderr, "usage: %v\n", usage)
|
||||
os.Exit(1)
|
||||
@ -26,20 +32,21 @@ func main() {
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
srcs = append(srcs, source(i))
|
||||
srcs = append(srcs, source(i, *max))
|
||||
}
|
||||
f := fmt.Sprintf("%%%dd\n", int(math.Log10(float64(*max))))
|
||||
for i := range merge(srcs...) {
|
||||
fmt.Printf("%20d\n", i)
|
||||
fmt.Printf(f, i)
|
||||
}
|
||||
}
|
||||
|
||||
func source(c int) <-chan int {
|
||||
func source(c, max int) <-chan int {
|
||||
out := make(chan int)
|
||||
go func() {
|
||||
vals := make([]int, c)
|
||||
src := rand.New(rand.NewSource(time.Now().UnixNano()))
|
||||
for i := 0; i < c; i++ {
|
||||
vals[i] = src.Int()
|
||||
vals[i] = src.Intn(max)
|
||||
}
|
||||
|
||||
sort.Ints(vals)
|
||||
|
Loading…
Reference in New Issue
Block a user