这是我创建的功能:
tJugador quienEmpieza(){
rand()
tJugador whoStarts = tJugador(rand() % 2); // randomly assigns player
return whoStarts;
我希望它随机选择0或1。它每次都选择0。一个caculator游戏,应该随机选择玩家Persona或玩家Automata。我只需要帮助弄清楚如何使函数选择0或1.
以下是包含建议更改的整个程序:
#include <iostream>
#include<ctime>
#include<cstdlib>
#include <string>
using namespace std;
const int Meta = 31;
enum tJugador { Automata, Persona };
tJugador quienEmpieza();
tJugador pasalacalculador();
int digitoAleatorio();
int digitoAutomata(int ultimo);
int digitoPersona();
int digitoPersona(int ultimo);
bool mismaFila(int ultimo, int nuevo);
bool mismaColumna(int ultimo, int nuevo);
bool digitoValido(int ultimo, int nuevo);
int main()
{
std::srand(time(NULL));
int pasalacalculadora();
int whoStarts = 0;
int d = 0;
int suma;
suma = 0;
string nom;
int ultimo;
ultimo = 0;
int x = 0;
int next = 0;
cout << "Bienvenido a Pasa La Calculadora!" << endl;
cout << "Como Te llamas?";
cin >> nom;
cout << "Hola:" << nom << endl;
cout << "Empiezas:";
if (whoStarts == 0)
{
std::cout << "Automata" << endl;
}
else if (whoStarts == 1)
{
std::cout << "Persona" << endl;
}
while ((x != 0) && (suma < Meta)) {
cout << "Introduce un numero (0 para abandonar): ";
cin >> d;
cout << "Suma =" << suma << endl;
if (whoStarts == Automata){
d = digitoAutomata(ultimo);
suma = suma + d;
ultimo = d;
next = Persona;
}
if (whoStarts == Persona){
x = digitoPersona();
suma = suma + x;
ultimo = x;
next = Automata;
}
}
cin.sync();
cin.get();
system("pause");
return next;
}
tJugador quienEmpieza(){
rand();
tJugador whoStarts = tJugador(rand() % 2); // randomly assigns player
return whoStarts;
}
int digitoAleatorio(){
return (rand() % 9) + 1; // randomly assigns a number
if (quienEmpieza == 0)
{
std::cout << "Introduce un digito:" << digitoAleatorio << endl;
std::cout << ("Suma:") << digitoAleatorio << endl;
}
}
int digitoAutomata(int ultimo){
bool validDigit = false;
int digitoAleatorio = 0;
int d = 0;
if (digitoAleatorio == validDigit) {
(d = true);
return d;
}
}
int digitoPersona(){
int x;
int whoStarts = 0;
if (whoStarts == 1)
{
cout << "Introduce un numero entre 0 y 9(0 para abandonar): ";
cin >> x;
}
if ((x >= 1) && (x <= 9))
{
cout << ("Suma:") << x << endl;
}
return x;
}
}
答案 0 :(得分:2)
我发现您的方法存在一些问题:
%3
应该从{0,1,2}
通常,您应该只初始化一次随机数生成器,然后多次调用rand()
。所以我的问题是:您有多少次调用rand()
来评估生成的值的分布?
具有随机数的事物是它们是随机的,因此可以有效地调用rand()
两次或三次将产生三个连续的0
值。最重要的是rand()
是一个伪随机数生成器,这意味着它不是随机的,它只是设计看起来是随机的。
要评估结果的分布,您应该生成几千个数字(甚至几十个或几十万个),然后查看0
的数量是否大约等于{{1}的数量你得到了。
答案 1 :(得分:-3)
在程序开头使用一次,例如
int main()
{
srand(time(nullptr));
// do work
}
我会从更大的频谱中生成数字,例如。 1000并检查数字是奇数还是偶数,从而确定0或1 e.g。
num = rand() % 1000;
if (num % 2 == 0)
// 0
else
// 1
// or the other way around
//or simply go
rand() % 2; // was % 1