请教问题,怎么实现这么一个随机数
0-31,0-63都好实现,上面这个怎么办?
很大的数据等分啊,多少到多少算0,多少到多少算1
我一下子也没想出来就这个很直观的笨办法
大概是乘以M除以N?
范围不大的话可以用查找表
或者这样,伪随机数其实每次变化的次序都是固定的
你加个逻辑等到他转到第57个数的时候强制拉回原点就可以了
如果大于56,直接把[6]=0不就得了,当然这个伪随机你也没有说要求等概率的。
生成一个0~1的随机数,乘56然后四舍五入或者做别的运算
均匀分布的随机数的和就不再是均匀分布了。。所以这个方法貌似不行
生成一个0 ~ 57n-1的,然后除以57取余即可。
比方说用先生成一个0 ~ 1024*57-1之间的数
X(n+1) = 2965 * X(n) + 127 (mod 1024*57)
然后实际输出X(n) mod 57,这样的话循环周期是1024*57个数。
没搞过硬件,不知道硬件能不能做到。
你看这样行么 如果生成的数字比56大 就保持 之前的结果
生成0~65535的随机数,乘57,截取高6位
应该基本上均匀分布了,如果要求再高,就把前面的随机数范围继续扩大位数
说到硬件,怎么能不提电阻热噪声采样放大量化产生随机数呢
不是随机数产生的问题,重点在限制了范围,
伪随机数就可以了
伪随机的话
16bit的pn序列发生器面积不大吧?
我应用在一个需要低面积的地方,
不过我现在差不多解决了
谢谢大家的思路
能否一个伪随机序列产生0?63 另一个序列产生0?31,判断当前一个序列大于56时,输出第二个序列的数,否则使用第一个序列的数
另外:楼主分享下思路呗
是不是应该把你解决的办法汇报一下啊!这个帖子不会就这么不了了之了吧?
我解决是根据我具体应用来解决的
我是硬件电路中的移位问题,需要56随机移位(伪随机)
我设置了一个随机数R,决定了移位方向,另外设置一个5位随机数(31)决定移多少位,
当R=1时,从低位地址往高位移,R=0,反过来,
最终的结果还可以接受,尽管有小部分概率会大一点,但是可以接受
是随机选取一个电路单元,不是移位,
就是说总共56的单元,去随机选取