Ich muss ein 8x8 Gitter erstellen und verteilen 10 Münzen in zufälligen Positionen auf dem Gitter. Das Problem, mit dem ich konfrontiert bin, ist, dass die Randint-Funktion manchmal die gleichen Zufallskoordinaten erzeugt und daher nur 9 oder 8 Münzen generiert und auf das Gitter gelegt werden. Wie kann ich sicherstellen, dass dies nicht passiert? Cheers :) Das ist mein Code so weit:Wie erstelle ich 10 zufällige x, y Koordinaten in einem Gitter mit Python
from random import randint
grid = []
#Create a 8x8 grid
for row in range(8):
grid.append([])
for col in range(8):
grid[row].append("0")
#create 10 random treasure chests
#problem is that it might generate the same co-ordinates and therefore not enough coins
for coins in range(10):
c_x = randint(0, len(grid)-1)
c_y = randint(0, len(grid[0])-1)
while c_x == 7 and c_y == 0:
c_x = randint(0, len(grid)-1)
c_y = randint(0, len(grid[0])-1)
else:
grid[c_x][c_y] = "C"
for row in grid:
print(" ".join(row))
I enthalten sind, eine Weile/andere - da es keine Münze in der linken unteren Ecke des Rasters
Muss der Algorithmus auf höhere Dimensionen skaliert werden, oder wird er ein 8x8 Raster mit 10 Münzen bleiben? Die Antworten sind bisher gültige Antworten für Ihren Fall, aber verschiedene Ansätze könnten erforderlich sein, wenn Sie planen, mehr Münzen zu platzieren oder ein Gitter mit höherer Dimension zu haben. –
Hi @PatrikH Ja, das Raster wird Optionen haben, die später im Programm erweitert werden und enthalten mehr Münzen. Wenn ich das Gitter in einer Funktion erstelle und die 8 für einen Parameter/ein Argument ersetze, sollte das richtig funktionieren? ;/ –
Ja, das funktioniert. Die Qualität der Antwort auf Ihre Frage hängt jedoch von der Domäne des Problems ab. Die Komplexität des Algorithmus ist für kleinere Problemgrößen wie Ihr 8x8-Raster-Beispiel nicht so wichtig, wird Ihre Auswahl jedoch für größere Raster erheblich einschränken. Die Antworten, die ich bisher gesehen habe, werden sich mit zunehmender Rastergröße nicht gut verhalten. –