如何为此代码创建一个随机循环,以便它不会始终执行相同的情况,而且这是一个调用main的函数。希望这有助于我更多地考虑使用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;
}
}
答案 0 :(得分:1)
您需要让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)
。我总是假设你不需要高质量的随机性。