求救:随机数生成代码???

myheartwillgoon 2003-03-02 10:23:14

谁能共享单片机的随机数产生代码???不需8086的汇编代码

谢谢( dlmu_faith@yahoo.com.cn )。

我用A,或者其他寄存器值作为不确定因素为种子,这样来产生随机数

效果好吗?
...全文
51 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
紫郢剑侠 2003-03-05
  • 打赏
  • 举报
回复
gz
yyy1020 2003-03-03
  • 打赏
  • 举报
回复
寄存器值作随机数效果不好。
http://www.csdn.net/cnshare/soft/11/11463.shtm
zilingzhang 2003-03-03
  • 打赏
  • 举报
回复
如果你有外部电路,比如启动定时器,外部有某个信号(不确定时间产生),以此时定时器的值来运算再产生随机码
ahalf 2003-03-03
  • 打赏
  • 举报
回复
尽量使用定时器来生成
LeLeGhost 2003-03-03
  • 打赏
  • 举报
回复
忘了跟你说了,
其中I,J,K简单取值在0到2~2^32,理论上生成随机数个数为2^32个
实际情况并非如此,随机数的个数与I,J,K都有关系,
可以用数学方法求得:(求证过程非常复杂)
K必须为素数,而I,J之中必须有一个也是素数,
那么产生的随机数才会达到理论上的最大值K个
实践证明了一部数2^(2n-1)-1[n=2,3,4,....]都是素数,
即2的奇次方减一是素数
本人无法证明(1+1)理论,仅仅假设它是正确的
于是我们就可以取I=2^15-1,J=2^11-1,K=2^31-1
从而可以得到2^31-1个素数
避免某些数值我们永远无法取到的难题
也就是说,当用此算法去取得随机数K次时候,
(0~K-1)的数都会出现一次而且仅仅出现一次
johnny_jiang 2003-03-02
  • 打赏
  • 举报
回复
记住这些都是伪随机数生成器。
myheartwillgoon 2003-03-02
  • 打赏
  • 举报
回复
51
Hearson 2003-03-02
  • 打赏
  • 举报
回复
什么型号?
LeLeGhost 2003-03-02
  • 打赏
  • 举报
回复
[转帖]随机数生成理论/代码
本文出在 无花果的主页「 http://asmvirus.yeah.net/ 」

利用数学公式Rnd=(Rnd*I+J) mod K循环回带生成伪随机数 。
......
Rnd DD 12345678h;随机数种子变量
......
Start: call RndProc
mov ebx,eax
xor ecx,ecx
GetRnd: inc ecx
call RndProc
cmp ebx,eax
jnz short GetRnd
int 3;

;程序执行到这里,ecx刚好等于K,说明如果随机数要产生重复,必须循环K次

RndProc proc ;Out:eax=Rnd
local @@Rnd:dword
pushad
mov eax,Rnd
mov ecx,I
mul ecx
add eax,J
adc edx,0
mov ecx,K
div ecx
xchg edx,Rnd
mov @@Rnd,edx
popad
mov eax,@@Rnd
ret
RndProc endp
____________________________________________________________

My Home Page[http://CrazyLe.yeah.net]

21,458

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧