使用Golang生成随机数
main
中的代码用来计算生成指定数字所需要的次数,最后打印出来的是平均次数。
random
中的 ch
在被 tmp
读取前写入是堵塞的,而写入哪一个又是随机的。不知道这个随机是真随机还是伪随机。
好吧,运行出来要一段时间,还是看不出来。这种写法太蛋疼了,生成随机数用让出时间片的办法来做,虽然Go语言的 goroutine
是个很高效的东西,但是用在这种地方确实还是很大的一笔开销。
package main
import "fmt"
func random(length int) ( num int ) {
num = 0
ch := make(chan int, 1)
for i := 0; i < length; i++{
select {
case ch <- 0:
case ch <- 1:
case ch <- 2:
case ch <- 3:
case ch <- 4:
case ch <- 5:
case ch <- 6:
case ch <- 7:
case ch <- 8:
case ch <- 9:
}
tmp := <-ch
num = num*10 + tmp
}
return
}
func main() {
assigned_number := 1
count_total := 0
for c:=0; c<10000; c++ {
i := 0
for ; ; i++ {
r := random(4)
if r == assigned_number {
break
}
}
count_total += i
}
fmt.Println( count_total/10000 )
}