Генератор случайных чисел дает последовательные результаты

Поэтому цель моей программы — симулировать подбрасывание монеты. Я пытаюсь использовать генератор случайных чисел для генерации числа 1 или 2, 1 для головы, 2 для хвоста.

Однако в результате я продолжаю получать хвосты, где я иду не так?

#include <iostream>
#include <cstdlib> // Require for rand()
#include <ctime>   // For time function to produce the random number
using namespace std;

// This program has three functions: main and first.

// Function Prototypes
void coinToss();

int main()
{
int flips;

cout << "How many times would you like to flip the coin?\n";
cin >> flips;    // user input
if (flips > 0)
{
for (int count = 1; count <= flips; count++) // for loop to do action based on user input
{
coinToss();    // Call function coinToss
}
}
else
{
cout << "Please re run and enter a number greater than 0\n";
}
cout << "\nDone!\n";
return 0;
}

void coinToss() //retrieve data for function main
{
unsigned seed = time(0);  // Get the system time.
srand(seed); // Seed the random number generator
int RandNum = 0;

RandNum = 2 + (rand() % 2); // generate random number between 1 and 2

if (RandNum == 1)
{
cout << "\nHeads";
}
else if (RandNum == 2)
{
cout << "\nTails";
}
}

-5

Решение

Вы должны переместить функцию srand в начало main.
если вы вызовете эту функцию дважды в одну и ту же секунду, вы получите те же числа из random ()

также вы должны изменить

RandNum = 2 + (rand() % 2);

в

RandNum = 1 + (rand() % 2);

rand ()% 2 приведет к 0 или 1, поэтому добавление 1 приведет к 1 или 2

2

Другие решения


По вопросам рекламы [email protected]