我正在寻找将伪随机数分配给深奥语言brainf ***中的记忆单元的代码。我找到了这个示例代码,但发现它有些混乱。据我所知,这是一个“需要一些组装”(没有双关语?)样本。运行它导致了一个近乎无限的循环。我也已经看过这个问题和维基百科的文章,但仍然有些困惑。
我正在寻找一个可以运行的简单片段。我不在乎它是否会影响它周围的细胞。我只要求对样本进行很好的评论。
我已经使用您提到的那个页面上的算法为我正在编写的brainfuck 编译器实现RNG。那里的代码不太难使用。取其中的所有变量名称(如 temp0、temp1、randomh、randoml 等)并给它们一个数字。这将是该变量的单元格编号。然后,您只需为变量插入必要的 > 和 < 符号。这是第一部分的示例。temp0 到 temp5 的单元格编号为 0 到 5,randomh 为 6,randoml 为 7:
pointer starts at 0
pointer is at 0 and need to go to temp0 (cell 0) so do nothing
temp0 [-]
pointer is at 0 and need to go to temp1 (at cell 1) so move one position to the right
temp1 >[-]
pointer is at 1 and need to go to temp2 (at cell 2) so move another position to the right
temp2 >[-]
pointer at 2 and needs to go to 3 so move another position to the right
temp3 >[-]
pointer at 3 and needs to go to 4 so move another position to the right
temp4 >[-]
pointer at 4 and needs to go to 5 so move another position to the right
temp5 >[-]
pointer at 5 and needs to go to 6 so move one to the right
randomh >[
pointer at 6 and needs to go to 0 so move 6 to the left
temp0 <<<<<<+
pointer at 0 and needs to go to 6 so move 6 to the right
randomh >>>>>>-]
并且您继续为代码中的每个变量执行此操作。该算法的重要之处在于分配给 randomh 和 randoml 的单元格不会被任何其他代码触及,因为它们包含随机数种子(每次运行此代码时都会改变)
BrainfuckMachine IDE 附带的这个代码示例对我来说很好用。
>>>++[
<++++++++[
<[<++>-]>>[>>]+>>+[
-[->>+<<<[<[<<]<+>]>[>[>>]]]
<[>>[-]]>[>[-<<]>[<+<]]+<<
]<[>+<-]>>-
]<.[-]>>
]
"Random" byte generator using the Rule 30 automaton.
Doesn't terminate; you will have to kill it.
To get x bytes you need 32x+4 cells.