es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Imprimiendo los números float en Python para Sistema de Coordenadas.

Estoy intentando escribir un método que genere y devuelva n puntos aleatorios en un espacio bidimensional dado el ancho y la altura en Python. Codifiqué un algoritmo pero quiero recibir puntos flotantes en el sistema.
Aquí está mi código:

import random

npoints = int(input("Escriba el número de puntos:"))
width = int(input("Ingrese el ancho que desea:"))
height = int(input("Ingrese la altura que desea:"))

allpoints = [(a,b) for a in range(width) for b in range(height)]
sample = random.sample(allpoints, npoints)

print(sample)

La salida es:

Escriba el número de puntos: 4
Ingrese el ancho que desea: 10
Ingrese la altura que desea: 8
[(8, 7), (3, 3), (7, 7), (9, 0)]

¿Cómo puedo imprimirlos como flotantes? Por ejemplo: (8,75, 6,31)

Muchas gracias por la ayuda.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para generar puntos flotantes aleatorios en lugar de puntos enteros, puedes modificar el código para usar random.uniform() en lugar de range(), así:

    import random    
    
    npoints = int(input("Escribe el número de puntos:"))
    width = float(input("Escribe el ancho deseado:"))
    height = float(input("Escribe el alto deseado:"))
    
    allpoints = [(random.uniform(0,width), random.uniform(0,height)) for _ in range(npoints)]
    
    print(allpoints)
    

    En este código actualizado, se utiliza random.uniform() para generar coordenadas aleatorias entre 0 y el ancho/alto especificado. Se utiliza el marcador _ en el bucle for porque en realidad no necesitamos el valor del índice.

    Esto generará una lista de n pares de coordenadas flotantes en el rango [0.0, ancho) y [0.0, alto), donde los valores pueden incluir partes fraccionarias.

    Salida de muestra:

    Escribe el número de puntos:3
    Escribe el ancho deseado:10
    Escribe el alto deseado:8
    [(6.537642152561729, 4.475382411834392), (9.68474462433912, 5.330131315818465), (2.951219695093069, 0.9366025845073852)]
    

Comments are closed.