首页 > 解决方案 > 如何从我选择的三个整数中选择一个随机整数

问题描述

我正在制作一个琐事游戏,并且在函数中有问题以获得一个随机问题我试图选择一个随机整数,即 0、1 或 2。然后根据我得到的内容,我将指向一个函数并运行该函数。然后我想这样做,所以当我再次这样做时,我可以确保我不会再次得到这个整数,以免运行相同的问题。

这就是我现在所拥有的

  srand(time(NULL));
  int randomnumber;
  randomnumber = rand() % 3;

但它只是得到一个 0 到 2 之间的随机整数,然后不让我选择三个直接整数,然后在运行时将它们从这个数组中取出。

标签: crandominteger

解决方案


有很多方法可供选择。其中之一是创建一个整数数组,在您的情况下,它的大小为 3,其中包含数字 0...2。现在洗牌这个数组。有许多算法可以做到这一点。就是一个例子。
现在,只需遍历这个新创建的 shuffle 数组来调用函数。在这种情况下,您的两个要求都将得到满足。这些问题将按随机顺序排列,您不会再拨打同一个号码

此代码示例将帮助您入门:

void shuffle ( int arr[], int n ) {
    srand ( time(NULL) );
    //this will shuffle the array
    for (int i = n-1; i > 0; i--){
        // Pick a random index from 0 to i-1
        int j = rand() % (i);
        // Swap arr[i] with the element at random index
        swap(&arr[i], &arr[j]);
    }
}
int main(){
    int arr[] = {0, 1, 2};
    shuffle(arr, 3);
    int i;
    for(i = 0; i < 3; i++){
        // call the function with shuffled array
    }
}

您需要编写交换函数


推荐阅读