Colocar nodos aleatoriamente en los bordes

Colocar nodos aleatoriamente en los bordes

Estoy intentando configurar posun nodo de borde al azar. Las siguientes obras:

\documentclass{article}
\usepackage{tikz}
\tikzset{
    X/.code={
        \pgfmathparse{rnd}
        \xdef\X{\pgfmathresult}
        \pgfkeysalso{pos=\X, label=\X}
    }
}
\begin{document}
    \tikz \draw (0,0) edge node[X] {} (10,0) edge node[X] {} (10,10) edge node[X] {} (0,10);
\end{document}

Sin embargo, no funciona con un \edefen lugar de \xdef. ¿Por qué? ¿Dónde está el grupo cerrado que \Xse ha definido? ¿Y existe una solución con más elementos que no requiera que haga definiciones globales?

Respuesta1

No estaba al tanto de la .evalutedclave. Para mí,

\documentclass{article}
\usepackage{tikz}
\tikzset{X/.style={pos/.evaluated={rnd}}}
\begin{document}
    \tikz \draw (0,0) edge node[X] {} (10,0) edge node[X] {} (10,10) edge node[X] {} (0,10);
\end{document}

hizo el trabajo. Por supuesto, si quiero usar elmismovalor aleatorio dos veces (como en mi pregunta), esto no funciona. Pero no necesitaba eso de todos modos. Para eso, la .expandedclave (por ejemplo, pos/.expanded) podría ser útil, pero no lo he probado.

información relacionada