Я пытаюсь создать модель песчаника в r. Это одномерное.Создание модели одномерной песчаной формы в r
правила заключаются в следующем:
- Есть 10 пространства.
- Выберите случайное пространство. Отбросьте песчинку.
- a. Если в пространстве есть 0 зерен песка, добавьте 1 песчинку, в общей сложности 1. b. Если у него есть 1 песчинка, у него теперь два, и сваи рушится. Распределите одно из этих зерен каждому соседу. Если сосед имеет 0 зерен песка, добавьте один. Если у него есть два зерна песка, раздайте их каждому соседу. Продолжайте до тех пор, пока больше не будет более 1 зернистости. Зерна падают с края на 0 и 11.
Теперь я написал код. Генерация начального состояния само по себе было легко, конечно:
sandpile <- c(0,0,0,0,0,0,0,0,0,0)
После выясняя квадратные скобки, мне удалось случайно уронить песок и обновить соседние координаты:
drop <- sample (1:10, 1)
sandpile[drop] <- sandpile[drop]+1
if(sandpile[drop] > 1) { (sandpile[drop-1] <- sandpile[drop-1]+1)
if(sandpile[drop] > 1) { (sandpile[drop+1] <- sandpile[drop+1]+1)
if(sandpile[drop] > 1) {sandpile[drop] <- sandpile[drop]-2
Но это не продолжается каскад, это означает, что песочная песня [drop-1]> 1, sandpile [drop-2] и sandpile [drop] не обновляются.
Итак ... Мой вопрос в основном заключается в том, как я могу реализовать оставшуюся часть модели, а затем записать размер лавин (т. Е. Количество зерен песка, которые перемещают каждое обновление) для ряда n обновлений?
Спасибо! Обновлен, чтобы сделать его более понятным. – TheCurlyManLives