搜索
bottom↓
回复: 35
打印 上一主题 下一主题

怎么获得随机数呢

[复制链接]

出0入0汤圆

跳转到指定楼层
1
发表于 2015-6-18 18:34:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近在单片机上做随机数,用随机数作为种子,再去获取随机数,不知这样可行吗?
while(1)
{
        sran(ran());
        printf("%d\n",ran());

}

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入8汤圆

2
发表于 2015-6-18 18:50:21 | 只看该作者
用单片机一个AD口采浮空电压,然后当成随机数

出0入0汤圆

3
 楼主| 发表于 2015-6-18 19:00:10 | 只看该作者
prow 发表于 2015-6-18 18:50
用单片机一个AD口采浮空电压,然后当成随机数

AD脚刚好被用完了,你还有什么好的办法吗

出0入0汤圆

4
发表于 2015-6-18 19:03:06 | 只看该作者
用上了也可以啊,只要有AD,采一批数,取最低位不就出来了。

出0入0汤圆

5
发表于 2015-6-18 19:05:11 | 只看该作者
随机性比楼上更进一步:AD口采样噪声,进行多次采样末位组合,例如:8位AD,采样4次,取末2位,组合成8BIT。

出0入0汤圆

6
 楼主| 发表于 2015-6-18 19:07:50 | 只看该作者
lcofjp 发表于 2015-6-18 19:03
用上了也可以啊,只要有AD,采一批数,取最低位不就出来了。

我要产生3个unsigned char 数,那怎么办?

出0入0汤圆

7
发表于 2015-6-18 19:26:32 | 只看该作者
fighter_ck 发表于 2015-6-18 19:07
我要产生3个unsigned char 数,那怎么办?


采样24次,每次取最低bit,这样一共24bit,组成3个8位unsigned char。

出0入0汤圆

8
发表于 2015-6-18 19:33:28 | 只看该作者
get rtc time

出0入0汤圆

9
发表于 2015-6-18 20:26:58 | 只看该作者

这个赞一个 +1

出0入0汤圆

10
发表于 2015-6-18 20:38:56 | 只看该作者

这个方法好.

出0入0汤圆

11
发表于 2015-6-18 20:50:12 | 只看该作者

1.我也是跟我们经理学的
2.随机数唯一就好  
3.u32位的应该挺大了

出0入0汤圆

12
发表于 2015-6-18 20:50:31 | 只看该作者

1.我也是跟我们经理学的
2.随机数唯一就好  
3.u32位的应该挺大了

出0入0汤圆

13
发表于 2015-6-18 20:53:14 | 只看该作者
KEIL库函数有产生随机数的函数的

出0入8汤圆

14
发表于 2015-6-18 21:32:05 来自手机 | 只看该作者
据说库函数产生的是伪随机数

出0入71汤圆

15
发表于 2015-6-18 21:50:16 | 只看该作者
不行,每次出来的初始数据是一样的。如果是MCS51的话,在startup.asm里面写一个代码,复位后,把128个RAM的数据求和,取8位数据作为种子。MCS51复位后RAM区的数据是随机的。

出0入0汤圆

16
发表于 2015-6-18 22:13:05 | 只看该作者
磊磊映画 发表于 2015-6-18 20:50
1.我也是跟我们经理学的
2.随机数唯一就好  
3.u32位的应该挺大了

确实如此,谢谢分享

出20入25汤圆

17
发表于 2015-6-18 22:30:14 来自手机 | 只看该作者
有专用芯片,北京一家公司的

出0入0汤圆

18
发表于 2015-6-18 23:04:35 | 只看该作者
不说什么单片机就是耍流氓,stm32f4还内置随机数发生器呢。

出0入0汤圆

19
 楼主| 发表于 2015-6-19 00:12:26 | 只看该作者
磊磊映画 发表于 2015-6-18 20:50
1.我也是跟我们经理学的
2.随机数唯一就好  
3.u32位的应该挺大了

是不是通过按键取计数寄存器值?

出0入0汤圆

20
发表于 2015-6-19 00:35:57 来自手机 | 只看该作者
楼主是要写dali协议?

出0入0汤圆

21
发表于 2015-6-19 08:37:26 | 只看该作者
c语言库里有一个专门的随机数函数,我用过还行啊。

出0入0汤圆

22
发表于 2015-6-19 08:42:50 | 只看该作者
maqian 发表于 2015-6-19 08:37
c语言库里有一个专门的随机数函数,我用过还行啊。

前面已经说过  那个并不是真正的随机的

出0入0汤圆

23
发表于 2015-6-19 08:58:37 | 只看该作者
stm32 内部有rng

出0入0汤圆

24
发表于 2015-6-24 11:34:52 | 只看该作者
本帖最后由 steaven2000 于 2015-6-24 11:36 编辑

http://www.amobbs.com/forum.php? ... F%E6%9C%BA%E6%95%B0

出0入0汤圆

25
发表于 2015-6-24 13:58:26 | 只看该作者
本帖最后由 3DA502 于 2015-6-24 14:01 编辑

存到ROM里面,如果ROM足够大

出0入0汤圆

26
发表于 2015-6-25 15:58:56 | 只看该作者
磊磊映画 发表于 2015-6-18 20:50
1.我也是跟我们经理学的
2.随机数唯一就好  
3.u32位的应该挺大了

使用RTC时间对于一个具体的设备来说,确实能看做随机。

如果我需要的随机数是在某个相同天数(如每月25号)的某个具体时间点(如0:0:0)时产生的,那么所有的设备的随机数种子不都相同了吗?

出0入0汤圆

27
发表于 2015-7-8 17:11:28 | 只看该作者
ADC口接一个5%精度的电阻,世界上没有完全一样的电阻。

出0入0汤圆

28
发表于 2015-7-8 17:12:50 | 只看该作者
ruan18278816371 发表于 2015-6-18 20:53
KEIL库函数有产生随机数的函数的

那个在编译生成时候就是一个随机的固定值,不是随机

出0入0汤圆

29
发表于 2015-7-8 17:20:59 | 只看该作者
腹黑男 发表于 2015-6-19 08:42
前面已经说过  那个并不是真正的随机的

随机数的生成方法有很多种,什么叫"真正的随机数"?,难道用10个色子来仍才算?

出0入10汤圆

30
发表于 2015-7-8 21:14:27 | 只看该作者
一个变量在主程序里一直加1,需要随机数时读取这个变量,这样产生的数是不是随机数?

出0入0汤圆

31
 楼主| 发表于 2015-7-10 18:51:39 | 只看该作者
ylei12 发表于 2015-7-8 21:14
一个变量在主程序里一直加1,需要随机数时读取这个变量,这样产生的数是不是随机数? ...

不是吧,这样太有规律了

出0入0汤圆

32
发表于 2015-7-10 19:56:47 | 只看该作者
fighter_ck 发表于 2015-7-10 18:51
不是吧,这样太有规律了

systick读取两次24+24位混着用

出0入10汤圆

33
发表于 2015-7-10 20:13:10 | 只看该作者
fighter_ck 发表于 2015-7-10 18:51
不是吧,这样太有规律了

一个32位的无符号变量有4294967296种状态,想凑一次对,不容易吧

出0入0汤圆

34
发表于 2015-7-11 19:09:12 | 只看该作者
如果芯片有唯一ID和32位定时器,从上电后定时器就开始和主频同步计数,溢出后舍掉高位,那么以这个计数值加上唯一ID做种子,基本可得出完全的随机数了

出0入0汤圆

35
发表于 2015-8-28 22:01:33 | 只看该作者
一直加1有什么不好,

出0入0汤圆

36
发表于 2015-8-28 22:08:01 | 只看该作者
利用蒙特卡罗算法可以生成伪随机数,伪随机数在一定条件下可以与真随机数相媲美
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-3-29 02:28

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表