A random number generator for xslt2.0+
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2005/xpath-functions" xmlns:math="http://www.w3.org/2005/xpath-functions/math" xmlns:array="http://www.w3.org/2005/xpath-functions/array" xmlns:map="http://www.w3.org/2005/xpath-functions/map" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:err="http://www.w3.org/2005/xqt-errors" exclude-result-prefixes="array fn map math xhtml xs err" version="3.0">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/">
<!-- declare fragment tree -->
<xsl:variable name="firstNames">
<firstname>Andrew</firstname>
<firstname>Alex</firstname>
<firstname>Aaron</firstname>
</xsl:variable>
<!-- generate a random number to randomly pick an email address -->
<xsl:variable name="IdTotal" select="string(sum(string-to-codepoints(fn:generate-id())))"/>
<xsl:variable name="random" select="xs:decimal(substring($IdTotal, string-length($IdTotal)-1, 2)) div 100"/>
<xsl:variable name="randomNumber3" select="floor(($random *3) mod 3) + 1"/>
<xsl:value-of select="$firstNames/firstname[$randomNumber3]"/>
</xsl:template>
</xsl:stylesheet>