|
Go ရဲ့ |
|
![]()
package main |
|
import ( "fmt" "math/rand" "time" ) |
|
func main() { |
|
|
ဥပမာ၊ |
fmt.Print(rand.Intn(100), ",")
fmt.Print(rand.Intn(100))
fmt.Println()
|
|
|
fmt.Println(rand.Float64())
|
|
ဒါကို တခြား range တွေအတွက် ကျပန်း float တွေ ထုတ်လုပ်ဖို့ သုံးနိုင်ပါတယ်၊
ဥပမာ |
fmt.Print((rand.Float64()*5)+5, ",")
fmt.Print((rand.Float64() * 5) + 5)
fmt.Println()
|
|
ပုံမှန် number generator က deterministic ဖြစ်တဲ့အတွက် ပုံမှန်အားဖြင့်
အကြိမ်တိုင်းမှာ တူညီတဲ့ နံပါတ်စီးကြောင်းကို ထုတ်ပေးပါလိမ့်မယ်။
ကွဲပြားတဲ့ စီးကြောင်းတွေ ထုတ်လုပ်ဖို့ ပြောင်းလဲနေတဲ့ seed တစ်ခု ပေးပါ။
သတိပြုရမှာက လျှို့ဝှက်ထားချင်တဲ့ ကျပန်းနံပါတ်တွေအတွက် ဒါကို သုံးလို့ မလုံခြုံပါဘူး။
အဲဒီအတွက် |
s1 := rand.NewSource(time.Now().UnixNano())
r1 := rand.New(s1)
|
|
ရလာတဲ့ |
fmt.Print(r1.Intn(100), ",")
fmt.Print(r1.Intn(100))
fmt.Println()
|
|
တူညီတဲ့နံပါတ်နဲ့ source တစ်ခုကို seed လုပ်ရင် တူညီတဲ့ ကျပန်းနံပါတ်စီးကြောင်းကို ထုတ်လုပ်ပါတယ်။ |
s2 := rand.NewSource(42)
r2 := rand.New(s2)
fmt.Print(r2.Intn(100), ",")
fmt.Print(r2.Intn(100))
fmt.Println()
s3 := rand.NewSource(42)
r3 := rand.New(s3)
fmt.Print(r3.Intn(100), ",")
fmt.Print(r3.Intn(100))
}
|
|
ဒီနမူနာကို သင်ဘယ်နေရာမှာ run
သလဲပေါ်မူတည်ပြီး ထုတ်လုပ်ထားတဲ့ နံပါတ်တချို့
ကွာခြားနိုင်ပါတယ်။ Go playground မှာတော့
|
$ go run random-numbers.go 81,87 0.6645600532184904 7.123187485356329,8.434115364335547 0,28 5,87 5,87 |
|
Go က ပေးနိုင်တဲ့ တခြား ကျပန်းပမာဏတွေအတွက်
ကိုးကားချက်တွေကို
|
နောက်ဥပမာ: Number Parsing.