F # içinde rasgele bir sayı "üreteci" geliştirmeye çalışıyorum. F # işlevinde birden çok değerlendirmeyi zorla F #
başarıyla aşağıdaki işlevi yarattı:let draw() =
let rand = new Random()
rand.Next(0,36)
Bu iyi çalışır ve o 0 ile 36 Bununla
arasında bir sayı üretir, bu fonksiyonu birkaç kez çalıştırılan bir işlevi oluşturmak çalışıyorum .
Bendraw
anlama için yalnızca bir kez değerlendirilir olarak sadece tek bir sonuç almak, Ancak şu
let multipleDraws (n:int) =
[for i in 1..n -> draw()]
çalıştı.
draw
işlevinin birden çok uygulamasını nasıl zorlayabilirim?
Teşekkürler, ama anlamıyorum, size çözüm kullanarak, neden hala tohumla aynı problemi yaşamadım? – SRKX
Rastgele kurucuyu çağırırken, geçerli bilgisayarın zamanına göre bir tohum üretirsiniz. Ardından, Sonraki yönteme yapılan her çağrı, önceki tohuma dayalı yeni bir tohum * oluşturur ve zamana dayalı değildir.Artık süreye bağlı olmadığınızdan, aramalarınızın aynı makine saatinde yapılması önemli değildir. 'Draw' vücudun bir ilk satırı neler görmek için gibi eklemek isteyebilirsiniz' printfn "denir çizmek" ': –
@SRKK yalnızca bir çıkış görürsünüz. Aslında liste anlayışı içinde çağrılan '- Sizin' draw' fonksiyon Yanıtta bir imzayla anonim işlevini döndürür iken '(> int birimi), tamsayılar döndü. Bu anonim işlev, “rand” değerini bir kapanışa yaklaştırır, “rand” nin kendisi sadece bir kez tohumlanır. –