我如何生成 2 个随机数,一次在 50 和 259 范围内,一次在 50 和 159 范围内?

How do i generate 2 random numbers, once within the range of 50 and 259, and once within 50 and 159?

我正在为 class 开发一个 8086 程序集项目,需要一种方法来生成 2 个随机数,一次在 50 和 259 之间,一次在 50 和 159 之间。

对于一个项目class;我假设您不需要任何好东西(例如,不需要用于 security/cryptography 的东西,不关心偏见等)。

考虑到这一点;我只是从 BIOS 获取当前日期 ("int 0x1A, ah = 0x04") 和自午夜以来的当前刻度 ("int 0x1A, ah = 0x00");并将它们合并在一起(使用 XOR)以获得 pseudo-random 数字生成器的种子。

一旦你有了种子,就可以做一些数学杂技 - 例如将 "seed+1" 乘以一个大素数,然后将其除以一个稍小的素数(得到结果和余数);然后将结果、余数和原始异或得到一个新的种子和return最低16位作为下一个随机数。

如果您确实需要它好(而不仅仅是工作),您需要描述要求。

无论如何;一旦你有了获得 "random" 16 位整数的代码,你就可以将它右移或屏蔽它以获得从 0 到 255 的 "random" 值,然后将 50 添加到它以获得从 50 到305,如果它大于 259,则重试,这样你最终得到一个从 50 到 259 的值。以同样的方式,你可以移位或屏蔽以获得 0 到 127 之间的值,加 50,如果它大于 159,则重试;得到一个从 50 到 159 的值。