Coding slumpmässighet (3 / 4 steg)
Steg 3: Två slumpmässiga åtgärder
Vad händer om vi vill lägga till ytterligare komplexitet till robotar till synes slumpmässiga beteende? Du kan göra tre grundläggande saker. En är att lägga till några åtgärder i roboten som inte har något att göra med grundläggande rörelser beskrivs i den ursprungliga koden. Roboten kan exempelvis bara bara snurra i en cirkel med mellanrum som beslutas strängt av slumptalsgeneratorn komma med ett visst nummer. Eller kan du lägga till en annan slumpmässiga åtgärder oberoende av det som vi lade till tidigare. Till exempel om roboten stöter på ett hinder till vänster, agerar kanske ibland som det skulle i ursprungliga koden och flytta till höger, och kanske andra gånger det kunde vända helt och flytta i motsatt riktning. Eller, slutligen, kan du lägga till en slumpmässiga åtgärder som flätas samman med den första slumpmässiga åtgärden som beskrivs i det sista steget, som kan vara oberoende av att åtgärder eller alltid förutsägbart kopplade till åtgärden. Denna sista möjlighet är vad jag har gjort här.
Nu, när roboten stöter på ett hinder rakt fram, kommer det först avgöra vilken väg att vända det är hjul baserat på om slumptal genereras är udda eller ens som förklaras i det sista steget. För att lägga till komplexitet kan du programmera roboten att köra motorn bakåt under en viss tid om det var vände åt och en annan särskilt lång tid om det var visade rätt, därmed vrida roboten att olika grader baserat på riktningen av vänden. Eller du kunde göra vad jag har gjort här, och göra dessa två variabler oberoende av varandra. Med andra ord ett slumptal genereras som avgör om ratten vrids vänster eller höger, och en annan slumptal genereras för att avgöra om roboten kommer tillbaka genom det vänden för 2,5 sekunder eller 5 sekunder. Detta ger oss 4 varianter av hur roboten ska fungera när det ryggen efter stöter på ett hinder rakt fram.