¿Cuál es la mejor/más fácil manera de mezclar una lista larga en Mathematica?Mezclar una lista en Mathematica
Respuesta
RandomSample[list]
Sí, es así de simple. Al menos desde la versión 6.
Antes RandomSample
se introdujo, se podría utilizar:
#[[ Ordering[Random[] & /@ #] ]] & @ list
Actualmente uso
list[[[email protected]@Length[list]]]
Esto es para Mathematica 8. Combinatorica también tiene una función RandomPermutation (versiones anteriores).
Estoy buscando otras/mejores soluciones, si hay alguna.
Antes de la introducción RandomSample, he utilizado el siguiente grupo matemático-función en gran medida, aunque es más rápido RandomSample al menos por uno magnitud en mi máquina.
In[128]:= n = 10;
set = [email protected]
Out[129]= {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
In[130]:= Take[set[[Ordering[RandomReal[] & /@ [email protected]]]], n]
Out[130]= {8, 4, 5, 2, 3, 10, 7, 9, 6, 1}
Otro problema además del desempeño es que si los mismos números reales aleatorios se golpean dos veces (poco probable aunque posible,) pedidos no dará estos dos en orden aleatorio.
Perdónenme, pero ese es un código poco fiable que tienen allí. (1) 'RandomReal [] &/@ Range @ n' podría reemplazarse por' Random [] &/@ set' o, por lo general, más rápido 'RandomReal [1, Length @ set]'. (2) 'Take [..., n]' no está haciendo nada aquí y puede eliminarse. Por lo tanto, el código debería ser: 'set [[Ordering @ RandomReal [1, Length @ set]]]' –
En realidad, usar 'RandomReal' no tiene ningún sentido, ya que se introdujo en la versión 6 junto con' RandomSample' . Por lo tanto, esto tiene más sentido para la mezcla previa a la versión 6: '# [[Pedido [Aleatorio [] &/@ #]]] &' –
- 1. Indización de lista en mathematica
- 2. formato mathematica salida una lista de resultados
- 3. Diferenciación numérica de la lista en Mathematica
- 4. Cuenta cuántos valores diferentes toma una lista en Mathematica
- 5. Mezclar elementos en una lista (reorganizar elementos de la lista aleatoriamente)
- 6. Mathematica: reconstruir una lista anidada arbitraria después de Flatten
- 7. Mathematica: genera una lista de números primos hasta un límite
- 8. muy bien imprimir una matriz en mathematica
- 9. ¿Alguien sabe una manera de mezclar los elementos en una lista?
- 10. Cómo rastrear una ruta gráficamente en una matriz en mathematica
- 11. Mezclar una baraja de cartas
- 12. ¿Cómo mezclar trabajos en una cola Resque?
- 13. Oracle mezclar constantes en una sola mesa
- 14. Cómo mezclar caracteres en una cadena
- 15. en una lista anidada cómo probar si una secuencia de indexación dada es válida en mathematica
- 16. Longitud máxima de la lista para mezclar con Python random.shuffle?
- 17. Redefinir no conmutativa multiplicación en Mathematica Mathematica
- 18. ¿Puedo mezclar tipos de forma segura en una lista de Python?
- 19. Establecer una semilla para mezclar ArrayList en Java deterministicamente
- 20. ¿Cómo reemplazar cada 0 con el elemento precedente en una lista de manera idiomática en Mathematica?
- 21. ¿Cómo restar elementos específicos en una lista usando programación funcional en Mathematica?
- 22. Cómo obtener los elementos extrañamente indexados en una lista en mathematica
- 23. Obteniendo una imagen de Mathematica en Java
- 24. Mathematica .Net/Link en una aplicación Asp.Net
- 25. ¿Hay una estructura HashTable en Wolfram Mathematica?
- 26. Crear una matriz ortonormal simbólica en mathematica
- 27. Trazando una función de paso en Mathematica
- 28. Actualizar una barra de progreso en mathematica
- 29. Trazar una función compleja en Mathematica
- 30. ¿Dónde está DropWhile en Mathematica?
Antes de la versión 6, estaba usando 'Combinatorica'RandomPermutation', que es más rápido y más seguro, ya que nunca puede producir elementos idénticos. –
@Leonid Szabolcs declaró: "Combinatorica también tiene una función RandomPermutation (versiones anteriores). Estoy buscando otras/mejores soluciones, si las hay". Estaba respondiendo con eso en mente, pero debería ser una solución mejor antes de 6.0. –
Vaya, lo he perdido. Pero entonces no entiendo, la solución basada en 'Combinatorica'RandomPermutation' parece superior a mí, ¿por qué molestarse en utilizar una basada en' Random' (esta es una pregunta para @Szabolcs realmente, no para ti)? –