怎么获得随机数呢
最近在单片机上做随机数,用随机数作为种子,再去获取随机数,不知这样可行吗?while(1)
{
sran(ran());
printf("%d\n",ran());
} 用单片机一个AD口采浮空电压,然后当成随机数 prow 发表于 2015-6-18 18:50
用单片机一个AD口采浮空电压,然后当成随机数
AD脚刚好被用完了,你还有什么好的办法吗{:3_52:} 用上了也可以啊,只要有AD,采一批数,取最低位不就出来了。 随机性比楼上更进一步:AD口采样噪声,进行多次采样末位组合,例如:8位AD,采样4次,取末2位,组合成8BIT。 lcofjp 发表于 2015-6-18 19:03
用上了也可以啊,只要有AD,采一批数,取最低位不就出来了。
我要产生3个unsigned char 数,那怎么办?{:3_60:} fighter_ck 发表于 2015-6-18 19:07
我要产生3个unsigned char 数,那怎么办?
采样24次,每次取最低bit,这样一共24bit,组成3个8位unsigned char。 get rtc time 磊磊映画 发表于 2015-6-18 19:33
get rtc time
这个赞一个 +1 磊磊映画 发表于 2015-6-18 19:33
get rtc time
这个方法好. hzpj001 发表于 2015-6-18 20:38
这个方法好.
1.我也是跟我们经理学的
2.随机数唯一就好
3.u32位的应该挺大了 quner 发表于 2015-6-18 20:26
这个赞一个 +1
1.我也是跟我们经理学的
2.随机数唯一就好
3.u32位的应该挺大了 KEIL库函数有产生随机数的函数的 据说库函数产生的是伪随机数 不行,每次出来的初始数据是一样的。如果是MCS51的话,在startup.asm里面写一个代码,复位后,把128个RAM的数据求和,取8位数据作为种子。MCS51复位后RAM区的数据是随机的。 磊磊映画 发表于 2015-6-18 20:50
1.我也是跟我们经理学的
2.随机数唯一就好
3.u32位的应该挺大了
确实如此,谢谢分享 有专用芯片,北京一家公司的 不说什么单片机就是耍流氓,stm32f4还内置随机数发生器呢。 磊磊映画 发表于 2015-6-18 20:50
1.我也是跟我们经理学的
2.随机数唯一就好
3.u32位的应该挺大了
是不是通过按键取计数寄存器值?
楼主是要写dali协议? c语言库里有一个专门的随机数函数,我用过还行啊。 maqian 发表于 2015-6-19 08:37
c语言库里有一个专门的随机数函数,我用过还行啊。
前面已经说过那个并不是真正的随机的 stm32 内部有rng 本帖最后由 steaven2000 于 2015-6-24 11:36 编辑
http://www.amobbs.com/forum.php?mod=viewthread&tid=3980408&highlight=%E9%9A%8F%E6%9C%BA%E6%95%B0 本帖最后由 3DA502 于 2015-6-24 14:01 编辑
存到ROM里面,如果ROM足够大 磊磊映画 发表于 2015-6-18 20:50
1.我也是跟我们经理学的
2.随机数唯一就好
3.u32位的应该挺大了
使用RTC时间对于一个具体的设备来说,确实能看做随机。
如果我需要的随机数是在某个相同天数(如每月25号)的某个具体时间点(如0:0:0)时产生的,那么所有的设备的随机数种子不都相同了吗?
ADC口接一个5%精度的电阻,世界上没有完全一样的电阻。 ruan18278816371 发表于 2015-6-18 20:53
KEIL库函数有产生随机数的函数的
那个在编译生成时候就是一个随机的固定值,不是随机 腹黑男 发表于 2015-6-19 08:42
前面已经说过那个并不是真正的随机的
随机数的生成方法有很多种,什么叫"真正的随机数"?,难道用10个色子来仍才算? 一个变量在主程序里一直加1,需要随机数时读取这个变量,这样产生的数是不是随机数? ylei12 发表于 2015-7-8 21:14
一个变量在主程序里一直加1,需要随机数时读取这个变量,这样产生的数是不是随机数? ...
不是吧,这样太有规律了
fighter_ck 发表于 2015-7-10 18:51
不是吧,这样太有规律了
systick读取两次24+24位混着用 fighter_ck 发表于 2015-7-10 18:51
不是吧,这样太有规律了
一个32位的无符号变量有4294967296种状态,想凑一次对,不容易吧 如果芯片有唯一ID和32位定时器,从上电后定时器就开始和主频同步计数,溢出后舍掉高位,那么以这个计数值加上唯一ID做种子,基本可得出完全的随机数了 一直加1有什么不好, 利用蒙特卡罗算法可以生成伪随机数,伪随机数在一定条件下可以与真随机数相媲美
页:
[1]