Foro de elhacker.net

Programación => Programación General => Mensaje iniciado por: Tachikomaia en 24 Octubre 2023, 11:25 am



Título: ¿Cual es el método más simple de obtener 1 o -1 por azar?
Publicado por: Tachikomaia en 24 Octubre 2023, 11:25 am
Lo que se me ocurre es:
Código:
N = random(2)
// Genera 0 o 1.
Si N == 0
  N = -1

Quiero saber qué otros modos, más simples (es un poco subjetivo qué es simple, pero vemos), hay de lograr eso.

Le pregunté a GPT pero... no:
cual es el proceso más simple para obtener un N tal que sea 1 o -1

Citar
Si deseas obtener un número "N" que sea igual a 1 o -1, el proceso más simple sería asignar directamente el valor deseado a la variable "N". En términos de programación, puedes hacerlo de la siguiente manera:

Si quieres asignar 1 a "N":
```
N = 1
```

Si quieres asignar -1 a "N":
```
N = -1
```

Estos son ejemplos simples y directos de asignación de valores a una variable en diferentes lenguajes de programación. Dependiendo del contexto y el problema específico que estés abordando, puede haber diferentes formas de obtener un valor de 1 o -1, pero en general, asignar el valor directamente es la forma más simple de lograrlo.

por azar

Citar
Si deseas obtener un número "N" de forma aleatoria entre 1 y -1, puedes seguir estos pasos:

1. Utiliza una función o método proporcionado por el lenguaje de programación que estés utilizando para generar un número aleatorio.
2. Ajusta el rango del número aleatorio para que esté entre 0 y 1.
3. Resta 0.5 al número aleatorio para que esté entre -0.5 y 0.5.
4. Multiplica el número aleatorio por 2 para que esté entre -1 y 1.
5. Redondea el número al entero más cercano.
6. Asigna el valor resultante a la variable "N".

A continuación, se muestra un ejemplo en Python:

```python
import random

random_number = random.uniform(0, 1)  # Genera un número aleatorio entre 0 y 1
random_number -= 0.5  # Ajusta el rango alrededor de 0
random_number *= 2  # Ajusta el rango entre -1 y 1
N = round(random_number)  # Redondea al entero más cercano

print(N)
```

Este código generará aleatoriamente un número "N" que será igual a 1 o -1. Ten en cuenta que cada vez que ejecutes el código, obtendrás un resultado diferente debido a la naturaleza aleatoria de la generación de números.

solamente 1 o -1, por azar

Citar
Si deseas obtener aleatoriamente un número que sea específicamente 1 o -1, sin incluir ningún otro valor, puedes utilizar una función de generación de números aleatorios que genere un número entero aleatorio entre 0 y 1 y luego asignar -1 si el número es 0 y 1 si el número es 1. Aquí tienes un ejemplo en Python:

```python
import random

random_number = random.randint(0, 1)  # Genera un número entero aleatorio entre 0 y 1

if random_number == 0:
    N = -1
else:
    N = 1

print(N)
```

En este caso, la función `random.randint(0, 1)` generará un número entero aleatorio que puede ser 0 o 1. Luego, se verifica el valor generado y se asigna -1 a la variable "N" si el número es 0, o se asigna 1 si el número es 1. De esta manera, obtendrás aleatoriamente un número que será exclusivamente 1 o -1.
[/color]

Quizá es posible hacerlo en 1 línea o 2, sin if, mediante hacer algunas operaciones matemáticas...

PD: La etiqueta de color funciona mal aquí al incluir un quote parece, no voy a ponerla y quitarla en cada parte.


Título: Re: ¿Cual es el método más simple de obtener 1 o -1 por azar?
Publicado por: #!drvy en 24 Octubre 2023, 12:31 pm
Si lo quieres en python puedes utilizar random.choice.

Código
  1. from random import choice
  2.  
  3. print(choice([-1, 1]))


En tu ecuación original, asumiendo que random(2) te genera o bien 0 o bien 1, puedes hacer:

Código:
// Genera 0 o 1, lo multiplica por 2 (0*2 = 0) (1*2 = 2) y le resta 1 (0-1 = -1) (2-1 = 1)
N = random(2) * 2 - 1

o lo mismo aplicado en python:

Código
  1. from random import randint
  2.  
  3. rand = randint(0, 1) * 2 - 1
  4.  
  5.  
  6. print(rand)


Saludos


Título: Re: ¿Cual es el método más simple de obtener 1 o -1 por azar?
Publicado por: Tachikomaia en 24 Octubre 2023, 17:33 pm
Buscaba algo como lo 2ndo, me saco los sombreros ante usted señor.
(https://i.kym-cdn.com/photos/images/original/000/748/031/11f.gif)