Ich entwickle Spiel des Lebens für meine Aufgabe. Ich versuche die Zufallszahl für das Seeding zu verwenden, aber die nächste Generation funktioniert nicht. Wie kann ich die zufällige Seeding verwenden, um die nächste Generation zu überprüfen. Wenn ich den manuellen Seeding benutze, funktioniert der Code gut. Aber wird nicht funktionieren, wenn ich zufälliges Seeding verwende.Zufällige Aussaat in Game of Life kann nicht gut funktionieren
Handbuch Seeding
for (int i = 0;i<n;i++)
{
cout << "Enter the coordinates of cell " << i + 1 << " : ";
cin >> x >> y;
gridOne[x][y] = true;
printGrid(gridOne);
}
Zufalls Seeding
void generation(int gridOne[gridSize + 1][gridSize + 1])
{
int row, col;
srand(time(0));
for (row = 0; row < gridSize + 1; row++)
{
for (col = 0; col < gridSize + 1; col++)
{
gridOne[gridSize + 1][gridSize + 1] = (int)(rand() % 2);
cout << gridOne[gridSize + 1][gridSize + 1] << ' ';
}
cout << endl;
}
}
Hauptprogramm
int main()
{
clock_t begin, finish;
bool gridOne[gridSize + 1][gridSize + 1] = {};
//seeding code
cout << "Please enter number of iteration : " << endl;
cin >> iteration;
for (int a = 0; a<iteration; a++)
{
begin = clock();
printGrid(gridOne);
determineState(gridOne);
cout << endl;
}
finish = clock();
cout << "The elapsed time : " << (double)(finish - begin)/CLOCKS_PER_SEC;
system("pause");
return 0;
}
void printGrid(bool gridOne[gridSize + 1][gridSize + 1]) {
for (int a = 1; a < gridSize; a++)
{
for (int b = 1; b < gridSize; b++)
{
if (gridOne[a][b] == true)
{
cout << " \xDB ";
}
else
{
cout << " . ";
}
if (b == gridSize - 1)
{
cout << endl;
}
}
}
}
void compareGrid(bool gridOne[gridSize + 1][gridSize + 1], bool gridTwo[gridSize + 1][gridSize + 1]) {
for (int a = 0; a < gridSize; a++)
{
for (int b = 0; b < gridSize; b++)
{
gridTwo[a][b] = gridOne[a][b];
}
}
}
void determineState(bool gridOne[gridSize + 1][gridSize + 1]) {
bool gridTwo[gridSize + 1][gridSize + 1] = {};
compareGrid(gridOne, gridTwo);
for (int a = 1; a < gridSize; a++)
{
for (int b = 1; b < gridSize; b++)
{
int alive = 0;
for (int c = -1; c < 2; c++)
{
for (int d = -1; d < 2; d++)
{
if (!(c == 0 && d == 0))
{
if (gridTwo[a + c][b + d])
{
++alive;
}
}
}
}
if (alive < 2)
{
gridOne[a][b] = false;
}
else if (alive == 3)
{
gridOne[a][b] = true;
}
else if (alive > 3)
{
gridOne[a][b] = false;
}
}
}
}
Vielen Dank im Voraus.
"nicht funktioniert" ist bedeutungslos, bitte erklären, was und wie es "nicht funktioniert". Ihr manuelles Seeding hat überhaupt keine Seeding und keine Aufrufe von 'rand()'. –
Möglicherweise relevant https://stackoverflow.com/questions/27209282/how-does-calling-srand-more-than-once-affef-the-quality-of-randomness – Galik