tuy*_*gun 2 c++ algorithm tic-tac-toe
我正在使用 C++ 开发井字游戏,我想知道是否可以随机化一个数字,但它只能选择 2 或 5。
我在用户和计算机之间进行了随机启动,以便对这些代码块有一个公平的开始:
srand(time(NULL));
cout << "The First Person to go is randomly chosen!" << endl;
FirsttoGo = (rand()%2) + 1;
cout << "The first move goes to Player: " << FirsttoGo << endl;
turn = FirsttoGo;
Run Code Online (Sandbox Code Playgroud)
我想添加的功能是,无论谁开始游戏都可以选择 X 或 O,但如果计算机先启动,计算机应该能够在 X 或 O 之间选择。我还为 X 和 O 创建了常数值
static const int O = 5;
static const int X = 2;
Run Code Online (Sandbox Code Playgroud)
有办法做到这一点吗?
在 C++11 中,对于生成某个范围内的随机数有非常好的和更安全的添加(请参见下面的代码):
#include <random>
#include <iostream>
int main()
{
std::random_device rd;
std::mt19937 gen(rd());
std::uniform_int_distribution<> dis(1, 2);
for (int n=0; n<10; ++n) std::cout << dis(gen) << ' ';
std::cout << '\n';
}
Run Code Online (Sandbox Code Playgroud)
此外,在这篇精彩的演讲中,Stephan T. Lavavej 阐述了为什么使用被认为有害的原因。rand()
根据上面的示例,您可以针对您的问题进行调整,如下所示:
int getRandomIDX(int const a = 5, int const b = 2) {
std::random_device rd;
std::mt19937 gen(rd());
std::uniform_int_distribution<> dis(1, 2);
return (dis(gen) == 1)? a : b;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5448 次 |
| 最近记录: |