问题标签 [lfsr]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
lfsr - Berlekamp-Massey 最小 LFSR 问题
我在为我的序列(模式)获取正确的 LFSR 时遇到一些问题,当我将它实现为 LFSR 和相应的抽头时,它不会生成序列,有什么建议吗?目标patt为{1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1};
我的代码遵循维基百科的二进制字段版本(https://en.wikipedia.org/wiki/Berlekamp%E2%80%93Massey_algorithm):
每个周期的答案:
CiSi = 0; 测试作为算法结果提到的值看起来是正确的,因为它等于零,但是
c=1 1 0 1 0 1 1 1 1,这是多项式的系数,从左到右:C0,..., Ck: 1 + x^2 + x^4 + x^5 + x^6 + x^7
当我实现这个值时,结果不正确
根据https://en.wikipedia.org/wiki/Linear-feedback_shift_register以及 Wang Laung-Terng、Wu Cheng-Wen 和 W.Xiaoqing,“VLSI测试原则和架构 - 可测试性设计”,2006 年:
distribution - 线性反馈移位寄存器不均匀分布
我确实为基于以下文档的布尔数组中的线性反馈包移位寄存器编写了一个非常简单的 C 类代码:
http://courses.cse.tamu.edu/walker/csce680/lfsr_table.pdf https://www.xilinx.com/support/documentation/application_notes/xapp052.pdf
n = 63
编码:
结果:
关键是您可以看到分布几乎不均匀/均匀。事实上,偏差对于我的目的来说太高了。
我犯了错误还是我对LFSR一无所知?
algorithm - 在 O(1) 空间中伪随机选择和生成排列
我有一段代码,我必须在一堆向量中查找满足给定谓词的第一个元素。我必须多次这样做,并且由于有多个元素可以满足我的谓词,我想稍微随机化我检查的顺序,以便让每个人都有公平的机会被发现。
同时,我希望它尽可能高效,所以我真的不想洗牌/分配或任何类似的东西。
这个要求让我陷入了随机数生成、线性同余生成器、LFSR、Xorshifts、密码学的螺旋,但我很难找到一个好的解决方案。
我意识到真正随机选择排列是不可能的。我正在寻找的是一个我可以通过的生成器
N- 一颗种子
- 一些随机位(以从单独的 PRNG 生成的数字参数的形式)
它将循环遍历 N 个元素的排列之一(伪随机选择)。
这个答案提供了我认为可能是一个很好的起点;一个 16 位的生成器,形式为
哪个可以迭代丢弃任何大于 N 的数字。我喜欢这个,因为它不需要我找到素数,只需要 2 的下一个最高幂,它可以快速进行位摆弄。我玩过这个,我有一个表格的生成器
随机选择 z 和 y 给了我不同的排列。但是,我不完全了解它是如何工作的,是否可以改进,以及在什么范围内y应该z尽可能公平(因为更改参数会导致重复一些排列)。
任何人都可以指出我是否有更好的解决方案,以及阅读什么来了解更多信息?对于新手来说,这个领域看起来非常复杂,我不知道从哪里开始。
c - NASM x86 核心转储写入内存
我正在学习汇编 NASM 并尝试编写 LFSR 代码并在 C 程序上调用它以评估执行时间差异,但未能找出我的代码的问题。
我的 LFSR C 版本工作得很好,定义如下:
我的 NASM x86 基于 C 版本,它以与 C 代码相同的方式生成数字。它应该将指向数组的指针作为参数,并返回(作为引用)与创建的数字相同的数组,并返回(作为值)数字的数量。LFSR 逻辑工作得很好,我检查了创建的数字,但代码仍然给我一个 SegFault Core Dump 错误。
使用 gdb 的消息是错误在执行过程中。当我尝试调试我的代码时,我发现错误出现在 中mov dword [esi + 4 * eax], ebx,如果我将其注释掉,则代码不会输出段错误。
我在 C 中进行调用并声明我的向量和 NASM 函数的方式:
我相信向量对于 NASM 或 C 来说太大了,也许程序正试图访问坏内存,但我找不到任何东西来证实我认为既不能解决问题。已经尝试过mallocand calloc。
error-handling - 将 CRC 附加到末尾的缓冲区的 CRC 是否始终为 0?
假设示例... CRC 附加到末尾的缓冲区的 CRC 是否始终为 0?
c# - 使用 LFSR 的随机数
我对这个主题有点陌生。
最初的想法是使用 LFSR 生成一个随机数。到目前为止,我已经使用 c# 开发了一种 LFSR 方法。一旦函数被调用,它就会一直返回相同的值。
为了在每次运行程序时收集不同的随机数,我必须更改什么?
称呼
输出始终相同。
c - 如何生成从0到n的重复整数序列?
我正在尝试编写一些代码来创建一个伪随机整数序列,该序列使用从 0 到 n 的每个数字,然后重复。天真的方法是创建一个包含 n 个整数的数组,然后以某种方式对它们进行加扰,然后循环遍历它们。那是以空间换速度,但如果可能的话,我需要保留空间。
想到这里让我想起了“FizzleFade”,Wolfenstein 3D 使用红色填充屏幕的算法,一次一个像素,而不用两次填充同一个像素。这很简单(这个例子只打印 X 和 Y 坐标):
至少,它看起来很简单。这似乎是一个线性反馈移位寄存器。但是,我不知道如何将此代码调整为 n 位。我不知道他们是如何确定 XOR 值的。我首先尝试将上述代码调整为 8 位值,如下所示:
但是,无论我将 XOR 值更改为什么,我都只能得到 N 个值,其中 N < n,对于 8 位值,通常小于 100 个值。我如何确定 XOR 抽头?我需要不同的起始值吗?有比使用 LFSR 更快/更小的方法吗?
编辑:我取得了一些进展。我注意到在原始版本中,rndval 是输出值大小的两倍。所以我将我的 rndval 更改为 16 位无符号,然后将 XOR 更改为 0x1200 以模仿原始代码。这给了我 250 个随机值,都是独一无二的——非常接近!仍然不确定该怎么做。
verilog - 如何在 Verilog 中构建 5 位最大长度的 Galois LFSR?
我在获得所需的输出时遇到问题。
这是我的代码:
这是我的输出与正确输出的时序图。
我也不断收到此错误:
警告 (13024):输出引脚卡在 VCC 或 GND
c++ - C++ 中字符串的 32 位 LFSR 加密
我正在尝试实现一个 LFSR 来加密一个字符串,但问题是只有在 LFSR 的第 8 步是收集最低字节的时候。
我当前的代码正确加密(我相信),但不是我想要的格式。
我必须使用提供的初始值和提供的反馈值。
任何帮助,将不胜感激。
我的代码:
javascript - 试图在js中制作一个lfsr
我正在尝试在 js 中创建一个 lfsr,在它的头上每件事看起来都很好,我正在使用字符串并且我来回转换它们以获得最后一点,我的问题是打印我想要制作的数字一个大的十六进制数,我的逻辑是给我一个种子和一个长度,该函数应该生成一个该长度的十六进制数。
这是我的代码,我进行了一些测试并得到了很好的输出,但是当我得到答案时,我得到了这个输出:
哦,我的输入是这样的:
知道如何摆脱多余的 0 并获得我需要的东西吗?谢谢你的时间。


