В последнее время я неоднократно сталкивался с концепцией LFSR, которую я нахожу весьма интересной из-за ее связи с различными областями, а также увлекательной сама по себе. Мне потребовалось некоторое усилие, чтобы понять, последняя помощь была действительно хорошей страницей , намного лучше, чем (поначалу) загадочная статья в википедии . Итак, я хотел написать небольшой код для программы, которая работала бы как LFSR. Точнее, это как-то показало, как работает LFSR. Вот самое чистое, что я смог придумать после некоторых более длительных попыток (Python):
def lfsr(seed, taps):
sr, xor = seed, 0
while 1:
for t in taps:
xor += int(sr[t-1])
if xor%2 == 0.0:
xor = 0
else:
xor = 1
print xor
sr, xor = str(xor) + sr[:-1], 0
print sr
if sr == seed:
break
lfsr('11001001', (8,7,6,1)) #example
Я назвал «xor» вывод функции XOR, что не очень правильно. the ...
В последнее время я неоднократно сталкивался с концепцией LFSR, которая мне показалась весьма интересной из-за ее связи с различными областями, а также увлекательной сама по себе. Мне потребовалось некоторое усилие, чтобы понять, последняя помощь была действительно хорошей страницей , намного лучше, чем (поначалу) загадочная статья в википедии . Итак, я хотел написать небольшой код для программы, которая работала бы как LFSR. Точнее, это как-то показало, как работает LFSR. Вот самое чистое, что я смог придумать после некоторых более длительных попыток (Python):
def lfsr(seed, taps):
sr, xor = seed, 0
while 1:
for t in taps:
xor += int(sr[t-1])
if xor%2 == 0.0:
xor = 0
else:
xor = 1
print xor
sr, xor = str(xor) + sr[:-1], 0
print sr
if sr == seed:
break
lfsr('11001001', (8,7,6,1)) #example
Я назвал «xor» вывод функции XOR, что не очень правильно. the ...
В последнее время я неоднократно сталкивался с концепцией LFSR, которая мне показалась весьма интересной из-за ее связи с различными областями, а также увлекательной сама по себе. Мне потребовалось некоторое усилие, чтобы понять, последняя помощь была действительно хорошей страницей , намного лучше, чем (поначалу) загадочная статья в википедии . Итак, я хотел написать небольшой код для программы, которая работала бы как LFSR. Точнее, это как-то показало, как работает LFSR. Вот самое чистое, что я смог придумать после некоторых более длительных попыток (Python):
def lfsr(seed, taps):
sr, xor = seed, 0
while 1:
for t in taps:
xor += int(sr[t-1])
if xor%2 == 0.0:
xor = 0
else:
xor = 1
print xor
sr, xor = str(xor) + sr[:-1], 0
print sr
if sr == seed:
break
lfsr('11001001', (8,7,6,1)) #example
Я назвал «xor» вывод функции XOR, что не очень правильно. последней подсказкой была эта действительно хорошая страница , намного лучше, чем (поначалу) загадочная запись в википедии . Итак, я хотел написать небольшой код для программы, которая работала бы как LFSR. Точнее, это как-то показало, как работает LFSR. Вот самое чистое, что я смог придумать после некоторых более длительных попыток (Python):
def lfsr(seed, taps):
sr, xor = seed, 0
while 1:
for t in taps:
xor += int(sr[t-1])
if xor%2 == 0.0:
xor = 0
else:
xor = 1
print xor
sr, xor = str(xor) + sr[:-1], 0
print sr
if sr == seed:
break
lfsr('11001001', (8,7,6,1)) #example
Я назвал «xor» вывод функции XOR, что не очень правильно. последней подсказкой была эта действительно хорошая страница , намного лучше, чем (поначалу) загадочная запись в википедии . Итак, я хотел написать небольшой код для программы, которая работала бы как LFSR. Точнее, это как-то показало, как работает LFSR. Вот самое чистое, что я смог придумать после некоторых более длительных попыток (Python):
def lfsr(seed, taps):
sr, xor = seed, 0
while 1:
for t in taps:
xor += int(sr[t-1])
if xor%2 == 0.0:
xor = 0
else:
xor = 1
print xor
sr, xor = str(xor) + sr[:-1], 0
print sr
if sr == seed:
break
lfsr('11001001', (8,7,6,1)) #example
Я назвал «xor» вывод функции XOR, что не очень правильно. Однако это просто показано, как он проходит через возможные состояния, на самом деле вы заметили, что регистр представлен строкой. Не очень логичной связности.
Это можно легко превратить в красивую игрушку, за которой можно смотреть часами (по крайней мере, я мог: -)
def lfsr(seed, taps):
import time
sr, xor = seed, 0
while 1:
for t in taps:
xor += int(sr[t-1])
if xor%2 == 0.0:
xor = 0
else:
xor = 1
print xor
print
time.sleep(0.75)
sr, xor = str(xor) + sr[:-1], 0
print sr
print
time.sleep(0.75)
Тогда меня осенило, какой в этом смысл при написании программного обеспечения? Я слышал, что он может генерировать случайные числа; это правда? как? Итак, было бы неплохо, если бы кто-нибудь мог:
Кроме того, поскольку вокруг этой части логики и цифровых схем не так много дидактических материалов, было бы неплохо, если бы здесь новички (вроде меня) могли лучше понять эту вещь , или лучше, чтобы понять, что это такое и как это может быть полезно при написании программного обеспечения. Надо было сделать это вики сообщества?
Тем не менее, если кому-то хочется поиграть в гольф ... добро пожаловать.