example.go 880 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. // Copyright (c) 2011 CZ.NIC z.s.p.o. All rights reserved.
  2. // Use of this source code is governed by a BSD-style
  3. // license that can be found in the LICENSE file.
  4. // blame: jnml, labs.nic.cz
  5. // +build ignore
  6. package main
  7. import (
  8. "bufio"
  9. "flag"
  10. "github.com/cznic/mathutil"
  11. "log"
  12. "math"
  13. "os"
  14. )
  15. /*
  16. $ # Usage e.g.:
  17. $ go run example.go -max 1024 > mathutil.dat # generate 1kB of "random" data
  18. */
  19. func main() {
  20. r, err := mathutil.NewFC32(math.MinInt32, math.MaxInt32, true)
  21. if err != nil {
  22. log.Fatal(err)
  23. }
  24. var mflag uint64
  25. flag.Uint64Var(&mflag, "max", 0, "limit output to max bytes")
  26. flag.Parse()
  27. stdout := bufio.NewWriter(os.Stdout)
  28. if mflag != 0 {
  29. for i := uint64(0); i < mflag; i++ {
  30. if err := stdout.WriteByte(byte(r.Next())); err != nil {
  31. log.Fatal(err)
  32. }
  33. }
  34. stdout.Flush()
  35. return
  36. }
  37. for stdout.WriteByte(byte(r.Next())) == nil {
  38. }
  39. }