c - 生成一个介于 0 和 4 之间且不包括一个数字的数字

标签 c

在下面的代码中,是否有更好的方法来排除随机数中的一个值?

    enum Direction {HAUT, BAS, GAUCHE, DROITE} direction;

switch(direction)
{
    case HAUT:
        if (false)
        {
        do{direction=(rand() % 4); }while(direction!=0); 
        break;
        }

    case BAS:
        if (false)
        {
        do{direction=(rand() % 4); }while(direction!=1);
        break;
        }          
    case GAUCHE:
..........

最佳答案

看起来你的代码总是排除当前方向(向上排除 0,向下排除 1,等等),所以你可以使用 Enum.ordinal 来决定排除而不是使用开关,像这样:

Direction direction = GAUCHE; // ...for example...
int nextDir;
do {
    nextDir = rand() % 4;
} while (nextDir == direction);
direction = nextDir;

关于c - 生成一个介于 0 和 4 之间且不包括一个数字的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10525886/

相关文章:

c - 包含 math.h 库时程序内存不会增加

matlab - C语言的移动平均线

c - 二进制转十进制

c - 我是否在我的结构指针上正确地调用了 free() ?

c++ - 在 VS 中从 C 中的 long 转换为 C++ 中的 long 时出现意外输出?

c - 你如何确定C中文件的大小?

c - 如何在 C 中创建用于读取套接字数据的缓冲区

c - C 中的 BST - 元素删除

c - 不明白这个 for 循环是如何工作的

c++ - 将包含主函数的 C 程序包装到 C++ 类中,