golang随机数的问题,使用了网上所有的方法,都没有比较好的生成方式

sunny2015 · · 4099 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

我的代码: ``` package main import ( "fmt" "math/rand" //"runtime" "time" ) func main() { //runtime.GOMAXPROCS(1) fmt.Println("===rand.New(rand.NewSource(64))====") for i := 0; i < 20; i++ { r := rand.New(rand.NewSource(64)) fmt.Print(fmt.Sprint(r.Intn(5)) + "-") } fmt.Println("") fmt.Println("===rand.New(rand.NewSource(time.Now().UnixNano()))====") for i := 0; i < 20; i++ { r2 := rand.New(rand.NewSource(time.Now().UnixNano())) fmt.Print(fmt.Sprint(r2.Intn(5)) + "-") } fmt.Println("") fmt.Println("====rand.Seed(time.Now().UnixNano())===") for i := 0; i < 20; i++ { rand.Seed(time.Now().UnixNano()) fmt.Print(fmt.Sprint(rand.Intn(5)) + "-") } } ``` 输出的效果为: G:\goWorkspace\src>go run main.go ===rand.New(rand.NewSource(64))==== 3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3- ===rand.New(rand.NewSource(time.Now().UnixNano()))==== 1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1- ====rand.Seed(time.Now().UnixNano())=== 1-4-4-4-4-4-4-4-4-4-4-4-4-4-4-3-3-3-3-3- G:\goWorkspace\src>go run main.go ===rand.New(rand.NewSource(64))==== 3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3- ===rand.New(rand.NewSource(time.Now().UnixNano()))==== 1-2-2-2-2-2-2-2-2-2-2-2-2-2-2-2-2-2-4-4- ====rand.Seed(time.Now().UnixNano())=== 4-4-4-4-4-2-2-2-2-2-2-2-2-2-2-2-2-2-2-2- G:\goWorkspace\src>go run main.go ===rand.New(rand.NewSource(64))==== 3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3- ===rand.New(rand.NewSource(time.Now().UnixNano()))==== 4-4-4-4-4-4-3-3-3-3-3-3-3-3-3-3-3-3-3-3- ====rand.Seed(time.Now().UnixNano())=== 1-1-1-1-1-1-1-2-2-2-2-2-2-2-2-2-2-2-2-2- >**环境:** >go版本 1.4 >操作系统:win8 64bit >有什么方法:让随机数更好的生成吗?

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

4099 次点击  
加入收藏 微博
6 回复  |  直到 2015-01-13 05:36:45
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传