带模 ARM 的随机数

Random number with modulo ARM

我正在 ARM 中编写一个猜数字游戏,以了解更多信息。 但我被困在随机数生成...... 我调用 rand() 但我不知道如何对 100 求模以生成 0-100 范围内的数字。 我不认为 ARM 中有模并且 "and r0, r0, #100" 不是很随机...

这是伪随机数生成的开始:

mov r0, #0
bl time
bl srand
bl rand

A​​ND 只有在您感兴趣的余数来自 2 的幂的除法时才有效。您可以做的一件事是使用一个这样的值而不是 100。

另一种方法是使用余数定理:

a % 100 = a - (100 * int(a/100))

这也是 gcc 所做的(尽管它实际上避免了将 与 100 相除 reciprocal multiplication; if your ARM supports integer divide instructions, though, you're lucky)。