c - 如何从我选择的三个整数中选择一个随机整数
问题描述
我正在制作一个琐事游戏,并且在函数中有问题以获得一个随机问题我试图选择一个随机整数,即 0、1 或 2。然后根据我得到的内容,我将指向一个函数并运行该函数。然后我想这样做,所以当我再次这样做时,我可以确保我不会再次得到这个整数,以免运行相同的问题。
这就是我现在所拥有的
srand(time(NULL));
int randomnumber;
randomnumber = rand() % 3;
但它只是得到一个 0 到 2 之间的随机整数,然后不让我选择三个直接整数,然后在运行时将它们从这个数组中取出。
解决方案
有很多方法可供选择。其中之一是创建一个整数数组,在您的情况下,它的大小为 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
}
}
您需要编写交换函数。
推荐阅读
- python - 使用正则表达式从文本中解析块名称和实例名称
- winapi - WinAPI:您如何获得 UAC 为已签名二进制文件显示的“已验证发布者”?
- python-3.x - Selenium Webdriver (Python):我们可以为文本验证实现页面对象模型吗?
- configuration - 使用 Apache MINA 实现 JGIT TransportConfigCallback
- haproxy - HAProxy ACL 与文件中的用户代理不匹配
- sql - PostgreSQL 条件连接的性能 - 查询优化
- html - 如何使文本区域中的文本开始略低?
- reactjs - SPFx ListView 控件-“defaultSelection”不起作用
- php - 如何通过 WP CLI 取消 WP All Import?
- discord - 当事件发生在 Discord、OBS 更新中的浏览器源时,如何做到这一点?