我如何为该代码创建一个随机循环,以使它不会一直执行相同的情况,而且这是一个被主函数调用的函数。希望这会有所帮助,我只是想使用rand()函数。
int escapeRoom()
{
alt_u16 wheels;
alt_u16 Bumper;
int i;
Bumper = IORD_ALTERA_AVALON_PIO_DATA(EXPANSION_JP1_BASE);
Bumper = rand() & (LEFT_FRONT_BUMPER | RIGHT_FRONT_BUMPER);
switch(Bumper)
{
case BOTH_BUMPERS:
wheels = BACKWARDS;
IOWR_ALTERA_AVALON_PIO_DATA(EXPANSION_JP1_BASE, wheels);
break;
case RIGHT_FRONT_BUMPER:
wheels = RIGHT_BACKWARDS;
IOWR_ALTERA_AVALON_PIO_DATA(EXPANSION_JP1_BASE, wheels);
break;
case LEFT_FRONT_BUMPER:
wheels = LEFT_BACKWARDS;
IOWR_ALTERA_AVALON_PIO_DATA(EXPANSION_JP1_BASE, wheels);
break;
case NO_BUMPERS:
wheels = FORWARD;
IOWR_ALTERA_AVALON_PIO_DATA(EXPANSION_JP1_BASE, wheels);
break;
for (i=1 ; i<5 ; i++) ;
{
IOWR_ALTERA_AVALON_PIO_DATA(EXPANSION_JP1_BASE, !wheels);
}
break;
}
}
最佳答案
您需要使Bumper
是随机的。例如使用
Bumper = rand() & (LEFT_FRONT_BUMPER | RIGHT_FRONT_BUMPER);
该特定语句是否适合您取决于您所拥有的
心神。例如,我不知道为什么要从I / O端口进行初始读取。
如果需要这些位,则需要将它们保留在除
你的随机保险杠。
更新:
rand()
每次都可以给出相同的伪随机序列。这对于机器人与不确定的环境进行交互可能不错;但在大多数应用中,您需要随机种子。简单的选择是只调用srand(some unpredictable value such as sensor data or a high-resolution timer)
。我一直以为您不需要高质量的随机性。关于c - 随机开关,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22761970/