Как уже сказал Делнан в комментарии, вы не сможете использовать действительные двоичные числа , если вы имеете в виду побитовое эквивалентное использование памяти.
Целые числа (или длинные)конечно, действительные двоичные числа в том смысле, что вы можете обращаться к отдельным битам (используя побитовые операторы, но это легко спрятать в классе).Кроме того, long
объекты могут стать произвольно большими, т.е. вы можете использовать их для симуляции произвольно больших наборов битов.Это не будет очень быстро, если вы сделаете это на Python, но не очень сложно и хорошее начало.
Используя вышеописанную схему двоичной генерации, вы можете сделать следующее:
reduce(
lambda (a, p), b: (b << p | a, p + 1),
(random.randint(0, 1) for i in range(50*98)),
(0, 0)
)[0]
Конечно, random
поддерживает произвольно большие верхние границы, поэтому вы можете сделать именно это:
r = random.randint(0, 2**(50*98))
Это не совсем то же самое, так как отдельные двоичные цифры в не являются независимыми, так же как они независимы, когда вы создаете каждую цифру для себя.Опять же, зная, что вы работаете, в другом случае они тоже не очень независимы.Если это вас беспокоит, вам, вероятно, вообще не следует использовать модуль random
, а аппаратный RNG.