• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

为何随机数总是固定数?

有花堪折 2020-10-27 浏览量:744
#include<reg51.h>
#include<stdlib.h>
sbit c=P2^0;
void main()
{
unsigned char a[]={0xc00xf90xa40xb00x990x920x820xf80x800x90};
P0=a[rand()%10];
c=0;
while (1)
        ;
}
以上是源程序,P0连接共阳数码管,P2.0控制数码管阳极,随机数函数产生一个随机数给P0,应该是每次数都不一样,现在是每次运行都产生7,无论重启还是开机。


0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
所有亮答 数量:6
  • 这种伪随机数,如果不配置种子来初始化,否则会一直给一个数,这样才方便调试。

    你要使用随机数,需要提前配一个 种子初始化,一般种子是当前时间。

    一般 初始化随机数的函数时srand(),在正式使用前需要调用一次,而且最好给一个随机量来调用。

  • 是这样的,因为每次的随机数种子都一样,一般用adc采集噪声值作为随机数种子,这样每次才可以不同

  • 这个其实是伪随机数,建议利用AD采集尾数的方式实现随机数

  • C语言的随机数本来就是一个伪随机数,是需要随机数种子的,一般开发的时候都用系统时间为随机数种子,因为时间是会随时变化的,但是如果你用单片机开发的话,就没有时间可以提供,这样的话你可以使用一个不接外设的空ADC,因为会有随机信号,可以把这个信号作为随机数种子产生时间,

  • 调用rand的时候需要给一个随机数种子,否则就是一直不变的

  • 这个随机数是一个固定的数组输出,所以每次都是输出相同的,你可以直接采样AD的输出噪声作为随机数

相关问题

问题达人换一批

为何随机数总是固定数?