Я пытаюсь разработать симуляцию случайного блуждания в одном измерении. Я моделирую частицу вдоль линии с 10 дискретными позициями, которые может занимать частица. Частица может двигаться только влево или вправо на один пробел каждый раз, когда она «прыгает». В этой симуляции я получаю код для учета 20 прыжков. Генератор случайных чисел выдает 0 - для левого и 1 - для правого перед каждым «прыжком», чтобы сообщить «частице» go влево или вправо. Пожалуйста, смотрите код ниже и дальнейшие комментарии.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int randomInt( int max); // declaration of function //
int main()
{ // declaration of variables //
int i, j = 0;
int totalHops=20;
int seed;
int sites[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int *location;
location = &sites[j];
seed = time(NULL);
printf("The seed value for this 'random walk' is: %d.\n\n", seed); //keeping track of the seed used//
// setup the random number generator //
srandom(seed); // random path sequence //
printf("Initial location of the particle is at site %d.\n\n", *location);
for ( i=1; i<totalHops+1; i++ )
{
int direction = randomInt(2); // Two possible directions for particle to move, 0 = left, 1 = right //
if (direction == 1) {
location+= 1; // pointer moves right one space on array //
}
else {
location-= 1; // pointer moves left one space on array //
}
printf("After %2.d hop(s), the particle is at site %d.\n", i, (*location)%10); // I would prefer to be printing the entry of my array rather than relying on the fact the array is lablled with each entry the positon I have changed the pointer to //
}
printf("\n");
}
// function definition //
int randomInt(int max)
{
return (random() % max);
}
Мой вывод не повторяется каждый раз, когда я ожидаю паттерны. Похоже, выводит, что частица находится в положении 0 в одной итерации, а в следующую внезапно окажется в положении 4, например. Я бы предпочел, чтобы я печатал запись массива sites [], а не вводил положение в каждую запись и печатал значение указателя.
Буду очень признателен за любую помощь здесь. Я новичок в указателях, поэтому любая помощь будет высоко ценится.