随机化开关

时间:2014-03-31 12:48:53

标签: c

如何为此代码创建一个随机循环,以便它不会始终执行相同的情况,而且这是一个调用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;

        }
}

1 个答案:

答案 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)。我总是假设你不需要高质量的随机性。

相关问题