LS没理解LZ的意思,**绝对是有外部信号介入的,

[复制链接]
 楼主| weihualong 发表于 2008-3-13 09:07 | 显示全部楼层 |阅读模式
OTP的单片机在没有引入外部条件参与的情况下,能不能生成一个随机数.例如10个LED,要求每次开机随机亮其中一个.
xwj 发表于 2008-3-13 19:31 | 显示全部楼层

是的,你这属于外界时间介入的一种

比如等待通讯、电平变化、按键、遥控输入等一切能输入的信号,把之间的一个活多个时间作为变量,或者干脆等待的时候就不断的跑随机函数

另一种方法就是采集环境的温度、噪声、其他实时钟等一切不好控制的量,把按一定方法运算后作为随机函数的次数

反正,
在单片机的内部世界里,没有任何事情是随机的. 
要真正的随机必须得有外界条件的参与,比如介入时间
zhaoyu2005 发表于 2008-3-13 09:12 | 显示全部楼层

应该可以的

汇编的不知道,但是知道C语言里有随机函数可以调用,不过你得修改初始化函数,不能一上电就把RAM初始化,这样的话随机函数就不**了,也就是说你得保证每次上电,传入随机函数的变量(RAM中的一个或几个)是随机的
原野之狼 发表于 2008-3-13 09:13 | 显示全部楼层

用库函数产生伪随机数

HWM 发表于 2008-3-13 09:16 | 显示全部楼层

呵呵,可以是可以,但要注意好好的保留其“种子”

ayb_ice 发表于 2008-3-13 09:29 | 显示全部楼层

一般对未定义的空间访问会是随机的

有些51的DATASHEET是这样说的
computer00 发表于 2008-3-13 09:48 | 显示全部楼层

我觉得用随机这个词不大好,用未知比较好。

HWM 发表于 2008-3-13 09:56 | 显示全部楼层

还不如用“随意”更好,未定分布的随机数就是随意数。

xwj 发表于 2008-3-13 10:04 | 显示全部楼层

6楼错,支持4楼的观点

 qinxg 发表于 2008-3-13 09:13 侃单片机 ←返回版面    

4楼: 显然不行.在单片机的内部世界里,没有任何事情是随机的. 



要真正的随机必须得有外界条件的参与,比如介入时间
computer00 发表于 2008-3-13 10:04 | 显示全部楼层

问题是有些数据它的确是确定的,但是却是未知的。

dld2 发表于 2008-3-13 10:06 | 显示全部楼层
农民讲习所 发表于 2008-3-13 10:10 | 显示全部楼层

需要保存种子

如果你需要开机就要的话。
wjc3k 发表于 2008-3-13 10:51 | 显示全部楼层

随机

随机函数是根据一个计算公式由“种子”算出来的,只要种子确定,即使未知,算出来的随机数也是确定的。只要种子变化,便可以做到随机。
后学 发表于 2008-3-13 11:36 | 显示全部楼层

re

看我个人信息。。。
 楼主| weihualong 发表于 2008-3-13 16:45 | 显示全部楼层

问题是:最初的那颗种子繁衍下来的种子总是确定的.

你的那颗种子在每次开机后都是确定的.那么第二,第三..第N颗种子也总是确定的.如何让它不确定呢?
HWM 发表于 2008-3-13 16:49 | 显示全部楼层

这就是“伪”和“真”的区别,别管它,就统计而言相符就

yewuyi 发表于 2008-3-13 19:13 | 显示全部楼层

我弄的歪招之一~~

增加一个开机键,按一下就开机,再按一下就关机,开机的时候,按键采用弹起有效的方法,也就是按键弹起后设备才输出用户可体会到响应,此时用户才认为设备真正启动,否则只在那检测按键按下的时间,并用这个时间做为本次的种子,人手按下按键的反应时间每次都是不尽相同的,这本身就是随机的了^^
 楼主| weihualong 发表于 2008-3-14 08:19 | 显示全部楼层

是否能读RAM里的数据呢?

通常,单片机的厂家都会声明RAM在开机的时候具有不确定性.如果用这个不确定性产生种子不知是否可行.
古道热肠 发表于 2008-3-14 11:58 | 显示全部楼层

随机数的关键是它有随机性

当基数足够大时,随机数的值就会表现出概率均等性。
哈哈,引入时间也许是比较典型的作法,yewuyi的方**让用户时间长了摸出门道来的。
sheenhero 发表于 2008-3-17 17:54 | 显示全部楼层

niu

tai niu la  ni men
您需要登录后才可以回帖 登录 | 注册

本版积分规则

26

主题

232

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部