2010-12-07 173 views

回答

3

最常见的方法是使用时间戳。在32位模式下,可以通过rdtsc指令以16位模式完成:使用BIOS中断1A的功能0。因为它是一个时间戳,请避免频繁使用它(因为缺乏适当的分散),并将它用作伪随机数生成器的种子。当你只需要一个随机值时,你可以直接使用时间戳。

通常一个简单的伪随机数生成器就足够了:

static int seed = now(); 
seed = (seed * LARGE_PRIME1) % LARGE_PRIME2; 

而且还有wiki

+0

好的,请发给我你的意思是伪随机数发生器的URL。 – 2010-12-07 11:41:08

1

有一个很好的答案在雅虎这个确切的问题回答:

我怀疑这里的重点是学习 来编写汇编语言。这里的 指令集 (http://www.emu8086.com/assembler_tutorial/8086_instruction_set.html) 你有你需要 执行需要 产生伪随机数,除了 的“国防部”的指令,你会 必须写一个子程序方程的所有指令。特别注意对MUL和DIV 指令的限制 。 “存储在单独的 文件中”并不隐含在 指令集中。你必须更好地了解这里需要的东西。 “文件” 和“打印”是与 操作系统有关的概念;在这种情况下,它们是 输出的形式。

http://answers.yahoo.com/question/index?qid=20081030112909AAmjEsp

0

您可能会感兴趣的昂纳雾的伪随机数发生器(其中一些是用汇编写的)here