Jump to content

Полный цикл

В генераторе псевдослучайных чисел (ГПСЧ) полный цикл или полный период — это поведение ГПСЧ в его наборе допустимых состояний. В частности, говорят, что ГПСЧ имеет полный цикл, если для любого допустимого начального состояния ГПСЧ проходит каждое допустимое состояние перед возвратом в начальное состояние, т. е. период равен мощности пространства состояний.

Ограничения на параметры ГПСЧ, необходимые для того, чтобы он обладал полным циклом, известны только для определенных типов ГПСЧ, таких как линейные конгруэнтные генераторы и регистры сдвига с линейной обратной связью . Не существует общего метода определения того, является ли алгоритм PRNG полным циклом и не исчерпывает пространство состояний, которое может быть экспоненциально большим по сравнению с размером внутреннего состояния алгоритма.

Пример 1 (на C/C++)

[ редактировать ]

Учитывая начальное значение случайного числа, которое больше или равно нулю, общий размер выборки больше 1 и приращение, взаимно простое с общим размером выборки, полный цикл может быть сгенерирован с помощью следующей логики. Каждое неотрицательное число, меньшее размера выборки, встречается ровно один раз.

unsigned int seed = 0;
unsigned int sample_size = 3000;
unsigned int generated_number = seed % sample_size;
unsigned int increment = 7;

for (unsigned int iterator = 0; iterator < sample_size; ++iterator)
{
    generated_number = (generated_number + increment) % sample_size;
}

Пример 1 (на Python)

[ редактировать ]
# Generator that goes through a full cycle
def cycle(seed: int, sample_size: int, increment: int):
    nb = seed
    for i in range(sample_size):
        nb = (nb + increment) % sample_size
        yield nb

# Example values
seed = 17
sample_size = 100
increment = 13

# Print all the numbers
print(list(cycle(seed, sample_size, increment)))

# Verify that all numbers were generated correctly
assert set(cycle(seed, sample_size, increment)) == set(range(sample_size))

См. также

[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 3cf1fa76134d9bc1741844a80726a1b9__1653333540
URL1:https://arc.ask3.ru/arc/aa/3c/b9/3cf1fa76134d9bc1741844a80726a1b9.html
Заголовок, (Title) документа по адресу, URL1:
Full cycle - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)