reddestfox
Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Abs62 Ещё раз спасибо за ответы. Извини за упорство. Но я хочу дожать вопрос до конца (спецтопик по данному вопросу неохота создавать)... Кольцо псевдослучайных чисел состоит из ПОСТОЯННЫХ членов (то есть длинный одномерный замкнутый массив, члены которого ПОСТОЯННЫ). Допустим, попадаем на n-ный член, считываем, получаем r1,r2,r3,r4,...,rk1. Попадаем на n+1 член -- выйдет r2,r3,r4,...,rk2. Попадаем на n-1 член -- выйдет r0,r1,r2,...,rk3. И т.д. (количество считываемых элементов разное). То есть, попадая на соседние (или недалёкие в зависимости от количества считываемых элементов) элементы массива, мы рискуем повториться. Так? Вероятность такого исхода, наверно, пренебрежимо мала... Я так понимаю, именно, из-за экономии места данный массив не хранится в чистом виде (как большая совокупность чисел), а рекуррентно вычисляется. Значит, srandом мы гарантированно попадаем (тоже вычисление -- хотелось бы, если можно, также формулу) на какой-либо член кольца, а randом идём по нему в направлении возрастания его членов (интересно, а в противоположном направлении нельзя пойти?). Так? Неужели так просто и примитивно? Прямо, не верится. Или я недопонял? Просто вчере-позавчера-да-и-сегодня я представлял это дело ГОРАЗДО сложнее. Поскольку данная последовательность приближённо случайна, наверно, нет смысла... Но я бы сделал это дело в форме "Солнца с лучами". То есть, есть кольцо ("Солнце") -- наше кольцо. Но, попав на его элемент, мы двинемся не по кольцу, а по "лучу", который начинается в данной точке кольца, и по схожей (тоже зависимой от места попадания) формуле рекуррентно вычисляются сами случайные числа. Если математически (технически) невозможно сделать подобную последовательность с бесконечно большим периодом -- придётся вместо луча использовать тоже кольца для каждой точки исходного кольца. Таким образом, попав на соседние точки кольца, мы почти гарантированно, не повторяемся.
---------- Самый Рыжий Лис На Свете! |
|