完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
嗨,伙计们,我需要用PIC16F87Aa制作随机数生成器,它在两个数字(0-10)或(2-30)之间起作用。事实上,我用移位函数做了一个,但是每次给我相同的数字:(谢谢)
|
|
相关推荐
3个回答
|
|
在计算机科学中用来描述随机性的术语是熵。更多的熵意味着更多的随机性。目前还没有生成熵的算法。增加算法熵的已知方法依赖于物理世界中与量子尺度事件相关的行为。这些动作中最方便的是温度相关的。对于PIC16F877A的具体情况,当以指令周期测量时,看门狗计时器需要多长时间才能断言。通过阅读和理解PIC16F877A数据表,您会发现t.WDT对VDD电压和芯片的结温有很大依赖性(表17-5,参数31,最小7毫秒,从-40°C到+85°C的最大33毫秒,通常在5伏和25°C下为18毫秒)。当用微秒分辨率测量WDT间隔时,会有少量的真实随机性。这对您意味着,有可能使PIC16F877A具有少量的真实随机行为,但是正确实现并不明显或简单。像这样的应用可以用MLPAB模拟器或Labcenter电子:Proteus PCB设计和仿真软件开发。然而,它不会有任何真正的随机行为。为了观察真正的随机行为,应用必须在真正的PIC16F87A芯片中运行。
|
|
|
|
Hi在最近的一个项目中,我使用了16位Galois LFSR,取得了很好的效果。对于种子,我使用了双策略,即加电时的RAM垃圾与WDT时钟的低精度相结合。步骤1-在POR中,开始增加循环中的8位变量(Temp),直到发生WDT复位。步骤2-在WDTR之后“XOR”所有RAM位置的内容,包括SFRs。当一些SFR被初始化时,你不会以一个“0”的值来结束算法。种子的伪随机值的结果“异或”。将字节复制到16位伪随机数的高字节和低字节。步骤3-提取(调用LFSR函数)“Temp”伪随机数来初始化生成器。-现在您已经准备好开始生成伪随机数链,这些数字不会长时间重复,frOpor to HiHBTW:“PICLIST”档案有很多有趣的样本,包括LFSR。
|
|
|
|
除非你需要任何特殊的东西,否则在C库随机数=(UIT32)RAND()%中使用RAND;它将给你一个随机数,具有0×10范围的随机数=((UIT32)RAND()%)+2;将给你一个具有2到30范围的随机数。
|
|
|
|
只有小组成员才能发言,加入小组>>
5306 浏览 9 评论
2070 浏览 8 评论
1973 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3243 浏览 3 评论
请问电源和晶体值之间有什么关系吗?PIC在正常条件下运行4MHz需要多少电压?
2279 浏览 5 评论
827浏览 1评论
719浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
664浏览 1评论
PIC Kit3出现目标设备ID(00000000)与预期的设备ID(02c20000)不匹配。是什么原因
716浏览 0评论
616浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-1-25 09:18 , Processed in 1.154713 second(s), Total 49, Slave 43 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号