golang rastgele nasıl tohum için doğru sayısı | Netgez.com
SORU
7 EYLÃœL 2012, Cuma


golang rastgele nasıl tohum için doğru sayısı

Gidip rastgele bir dize oluşturmak için çalışıyorum ve şu ana kadar yazdığım kod

package main

import (
    "bytes"
    "fmt"
    "math/rand"
    "time"
)

func main() {
    fmt.Println(randomString(10))
}

func randomString(l int) string {
    var result bytes.Buffer
    var temp string
    for i := 0; i < l; {
        if string(randInt(65, 90)) != temp {
            temp = string(randInt(65, 90))
            result.WriteString(temp)
            i  
        }
    }
    return result.String()
}

func randInt(min int, max int) int {
    rand.Seed(time.Now().UTC().UnixNano())
    return min   rand.Intn(max-min)
}

Benim uygulama çok yavaş. Ekim time kullanarak döngü tekrar ve tekrar yineler bu yüzden belirli bir süre için aynı rasgele sayı getiriyor. Nasıl benim kod geliştirebilirim?

CEVAP
7 EYLÃœL 2012, Cuma


Her zaman aynı tohum ayarlamak için aynı işlemi. Eğer hızlı bir döngü içinde zaman tohum ayarı eğer tabii ki, muhtemelen aynı tohum birçok kez onu ararsın.

Farklı bir değer kadar randInt işlevi aradığınız gibi bir durumda, zaman Nano tarafından döndürülen olarak değişmesini bekliyorum.

As for all random libraries ve, özellikle, verilen bir dizi üretmek için gerekli olmadıkça programınızı başlatırken tohum sadece bir kez, örneğin ayarlamak için genellikle hata ayıklama için yapılır).

Bundan sonra sadece Intn sonraki rasgele tamsayı almak için arayın.

Ana başlangıç için randİnt fonksiyonu rand.Seed( time.Now().UTC().UnixNano()) hattı hareket ve her şey daha hızlı olacak.

Not ayrıca, bir dize bina basitleştirebilirsiniz düşünüyorum :

package main

import (
    "fmt"
    "math/rand"
    "time"
)

func main() {
    rand.Seed( time.Now().UTC().UnixNano())
    fmt.Println(randomString(10) )
}

func randomString(l int ) string {
    bytes := make([]byte, l)
    for i:=0 ; i<l ; i   {
        bytes[i] = byte(randInt(65,90))
    }
    return string(bytes)
}

func randInt(min int, max int) int {
    return min   rand.Intn(max-min)
}

Bunu PaylaÅŸ:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VÄ°DEO

Rastgele Yazarlar

  • 24 Канал

    24 КанаÐ

    5 ÅžUBAT 2006
  • AlaskanGrizzly

    AlaskanGrizz

    30 EKÄ°M 2009
  • Breno Rises

    Breno Rises

    7 Ocak 2014