在MIPS中使用随机数生成器吗?

问题描述 投票:0回答:1

因此,我在该站点上阅读了一些主题,然后发现了一个关于如何制作主题的主题。但是我真的找不到一个链接来解释更多有关如何编码的链接。我本课程的教科书根本没有提供有关RNG的任何信息,因此那里没有任何帮助。

代码是

li $a1, 4
li $v0, 42
add $a0, $a0, 1

要求在1-3之间的范围是否正确?我尝试输出它是什么随机数,但它不断给我相同的数字。

#sw $a0, 0($s0)
li $a1, 4
li $v0, 42
add $a0, $a0, 1
#syscall

li $v0, 4
la $a0, Checking
syscall

li $v0, 1
move $t0, $a0
syscall

我看到了sw $a0, 0($s0),但不确定是什么,需要输出吗? (我把它拿出来是因为在我按下一个键进入RNG之后,它说程序崩溃了)我一直得到268501267的输出,我不确定那是什么意思编辑:现在它开始一直给我268500992

任何人都可以帮忙深入解释一下吗?

从逻辑上讲,我理解42的来源以及为什么我需要加+1(这是因为我不会得到0的值)

从那里,我不知道代码为什么不输出我给定范围内的数字。

random mips mars-simulator
1个回答
2
投票

MARS documentation所述(在GUI帮助> Syscall中:

random int 41 $ a0 = i.d.伪随机数生成器(任何int)。$ a0包含下一个伪随机,均匀分布的int值从此随机数生成器的序列

所以

li $v0, 41         ; Service 41, random int
li $a0, 0          ; Select random generator 0
syscall            ; Generate random int (returns in $a0)

li $v0, 1  ; Service 1, print int
syscall    ; Print previously generated random int

对我来说很好,每次打印不同的数字。

使用它之前,您不需要初始化或播种随机流,只需使用流0。

© www.soinside.com 2019 - 2024. All rights reserved.