¿Valor aleatorio entre dos o más intervalos?

Jorge Oviedo shared this question 4 years ago
Answered

Dado un número natural "a" entre 0 y 9, quiero que un número "b" también tome un valor entre 0 y 9 pero que no sea el mismo valor que "a".


Intenté el siguiente comando:

b=random [1,9]

Si[b==a,Valor[b,random[1,9]]]

Pero el problema es que no tiene ningún sentido, pues si "b=a" vuelve a ejecutar el "random" y podría volver a coincidir con el valor de "a". Dicho comando debe ejecutarse al hacer clic en un botón.


Se me ha ocurrido una forma de lograrlo pero implica varios objetos que cargarían poco a poco el archivo.

Por ello, necesito saber si es posible un comando que sea de la siguiente forma, por ejemplo: b=random[(0,a-1)∨(a+1,9)]


Como alternativa he considerado crear una lista/secuencia que sería {1,2,3...,9} pero que NO contenga a "a", por lo que solo bastaría definir a "b" como un número que pertenece a dicha lista. Pero me surgen 2 problemas nuevos:

1) ¿Cómo creo una lista de naturales de 0 a 9 excluyendo a "a"?

2) ¿Cómo hago que "b" tome un valor de la lista anterior? Ya que no funciona b=AleatorioEn[lista1]

Best Answer
photo

L = Shuffle[Sequence[0, 9]]

a = Element[L, 1]

b = Element[L, 2]

Comments (8)

photo
1

Acabo de responderme la pregunta "1)".

Cree una lista/secuencia de naturales desde el 0 hasta el 9 , por ahora me falta lograr que "b" tome un valor de dicha lista.

Aunque insisto, prefiero un comando solo usando "random".

photo
1

Para que "b" tome un valor de la lista1 debía ejecutar.

b=ElementoAleatorio[lista1]


Ahora quiero que un número "c" tome un valor entre 0 y 9 distinto de "a" y "b". Cada vez que debo agregar listas para esto me parece que cargo innecesariamente el archivo.

photo
photo
1

Hola,


Quizá esto es lo que buscas.


Saludos.

photo
1

Lo logré gracias al comando "Remove" que me compartiste, pero lo curioso es que no fue necesario crear ninguna lista como en el ejemplo que compartiste, ya que se puede usar "Remove" con una definición de secuencia (que daría lugar a la lista que no quería crear) y el resultado será un número aleatorio en el intervalo deseado pero sin que tome el valor "a".

Muchas gracias!

photo
1

Genial, pensé que era necesario crear la lista.


Saludos.

photo
photo
1

L = Shuffle[Sequence[0, 9]]

a = Element[L, 1]

b = Element[L, 2]

photo
1

Solución definitiva. Muchas Gracias!

photo
© 2021 International GeoGebra Institute