我正在爲遺傳算法構建一個模擬輪盤選擇函數。首先,我想將fitnessScore
的sum
加在主函數中。在合計fitnessScore
之後,我想在Go中使用math/rand
包隨機化sum
中的一個值。我應該如何在這種情況下使用rand軟件包如何修復spin_wheel := rand.sum
以便隨機選擇一個值?使用Golang的遺傳算法中的輪盤選擇
package main
import(
"fmt"
"time"
"math/rand"
)
func rouletteWheel(fitnessScore []float64) []float64{
sum := 0.0
for i := 0; i < len(fitnessScore); i++ {
sum += fitnessScore[i]
}
rand.Seed(time.Now().UnixNano())
spin_wheel := rand.sum
partial_sum := 0.0
for i := 0; i < len(fitnessScore); i++{
partial_sum += fitnessScore[i]
if(partial_sum >= spin_wheel){
return fitnessScore
}
}
return fitnessScore
}
func main(){
fitnessScore := []float64{0.1, 0.2, 0.3, 0.4}
fmt.Println(rouletteWheel(fitnessScore))
}
能否請你澄清你想要做什麼?我個人沒有親眼看到您的代碼如何模擬輪盤賭輪...輪盤賭包含有34個離散值。出於某種原因,你正在做一筆總額並使用實際數字,但我不明白如何應用於輪盤賭遊戲?據我瞭解,你應該做'rand.Int31n(33)'產生一個介於0-33之間的數字,加上1得到輪盤輪的值,因爲它不是零索引,並保留索引32和33來表示0和00值。 – evanmcdonnal
我不明白這是如何編譯的。 'rand.sum'將從rand中未導出;它可能存在,但是package main中的代碼無法得到它。另外'對於我:= 0;我
gbulmer
這不是普通的輪盤賭法。它是由[link](https://www.youtube.com/watch?v=9JzFcGdpT8E)提供的遺傳算法的一部分。該視頻的作者使用Java,並將其移植到Golang中。是的,我意識到rand.sum問題,這就是爲什麼我要求幫助解決它。任何想法的傢伙? – zuma89