Здравствуйте, TheBeard, Вы писали:
TB>Здравствуйте, Аноним, Вы писали:
А>>есть большое число 2^48, нужно получить всё множество его значений,
А>>но не последовательно (как циклом for (i=0; i<2^48; i++...)),
А>>а в хаотичной последовательности, как это можно сделать?
TB>Например, использовать линейный конгруэнтный генератор псевдослучайных чисел с модулем 2^48.
Так не получится так как будут дубликаты. Это классическая задача тасования чисел
Есть линейный O(n) алгоритм генерации случайной последовательности K из интервала [1;N] без проверки на дубликаты. У Кнута есть доказательство суммы вероятностей. Алгоритм простецкий, на строк на 6.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>