{"data":{"markdownRemark":{"html":"<p>The Simudyne SDK provides a <code class=\"language-text\">SeededRandom</code> class which allows you to create prngs with specific seeds. </p>\n<h2 id=\"creating-a-seededrandom-instance\"><a href=\"#creating-a-seededrandom-instance\" aria-hidden=\"true\" class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Creating a SeededRandom instance</h2>\n<p>A <code class=\"language-text\">SeededRandom</code> instance can be created from anywhere in the model using a seed. The recomended way of getting a seed is using the config. This seed can be controlled through the console. </p>\n<div class=\"gatsby-highlight\" data-language=\"java\"><pre class=\"language-java\"><code class=\"language-java\"><span class=\"token keyword\">public</span> <span class=\"token keyword\">class</span> <span class=\"token class-name\">MyModel</span> <span class=\"token keyword\">extends</span> <span class=\"token class-name\">Model</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token comment\">// Use getOrSetLong if using this method before setup. (There might not be a seed value before setup.)</span>\n    <span class=\"token keyword\">public</span> <span class=\"token keyword\">long</span> seed <span class=\"token operator\">=</span> <span class=\"token keyword\">this</span><span class=\"token punctuation\">.</span><span class=\"token function\">getConfig</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span><span class=\"token function\">getOrSetLong</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"core.prng-seed\"</span><span class=\"token punctuation\">,</span> System<span class=\"token punctuation\">.</span><span class=\"token function\">nanoTime</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">public</span>  SeededRandom random <span class=\"token operator\">=</span> SeededRandom<span class=\"token punctuation\">.</span><span class=\"token function\">create</span><span class=\"token punctuation\">(</span>seed<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>If using this method from outside of a <code class=\"language-text\">Model</code>, retrieve the config with <code class=\"language-text\">InternalModelConfig.get()</code>.</p>\n<h2 id=\"using-a-seededrandom-instance\"><a href=\"#using-a-seededrandom-instance\" aria-hidden=\"true\" class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Using a SeededRandom instance</h2>\n<p>The <code class=\"language-text\">SeededRandom</code> class is a wrapper around Apache Commons Math3 PRNG functions. An Apache Commons <code class=\"language-text\">RandomGenerator</code> implementation exists on the <code class=\"language-text\">SeededRandom</code> instance at the field <code class=\"language-text\">generator</code>. </p>\n<div class=\"gatsby-highlight\" data-language=\"java\"><pre class=\"language-java\"><code class=\"language-java\">    <span class=\"token keyword\">public</span>  SeededRandom random <span class=\"token operator\">=</span> SeededRandom<span class=\"token punctuation\">.</span><span class=\"token function\">create</span><span class=\"token punctuation\">(</span>seed<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    random<span class=\"token punctuation\">.</span>generator<span class=\"token punctuation\">.</span><span class=\"token function\">nextInt</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>\n<p>The <code class=\"language-text\">SeededRandom</code> instance can also be used to create common distributions. Refer to the <code class=\"language-text\">SeededRandom</code> Javadoc for a full list of distributions. </p>\n<div class=\"gatsby-highlight\" data-language=\"java\"><pre class=\"language-java\"><code class=\"language-java\">    <span class=\"token keyword\">public</span>  SeededRandom random <span class=\"token operator\">=</span> SeededRandom<span class=\"token punctuation\">.</span><span class=\"token function\">create</span><span class=\"token punctuation\">(</span>seed<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    NormalDistribution normalDistribution <span class=\"token operator\">=</span> random<span class=\"token punctuation\">.</span><span class=\"token function\">gaussian</span><span class=\"token punctuation\">(</span><span class=\"token number\">1</span><span class=\"token punctuation\">,</span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    normalDistribution<span class=\"token punctuation\">.</span><span class=\"token function\">sample</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>\n<h2 id=\"agent-prng\"><a href=\"#agent-prng\" aria-hidden=\"true\" class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Agent prng</h2>\n<p>When running an agent based model, every agent has its own random number generator, each with its own seed built using the root seed. This means that if the root seed is constant, the agent seeds will stay the same. </p>\n<div class=\"gatsby-highlight\" data-language=\"java\"><pre class=\"language-java\"><code class=\"language-java\"><span class=\"token keyword\">public</span> <span class=\"token keyword\">class</span> <span class=\"token class-name\">MyAgent</span> <span class=\"token keyword\">extends</span> <span class=\"token class-name\">Agent</span><span class=\"token generics function\"><span class=\"token punctuation\">&lt;</span>GlobalState<span class=\"token punctuation\">></span></span> <span class=\"token punctuation\">{</span>\n    <span class=\"token keyword\">this</span><span class=\"token punctuation\">.</span><span class=\"token function\">getPrng</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span>nextDouble<span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span></code></pre></div>","headings":[{"value":"Creating a SeededRandom instance","depth":2},{"value":"Using a SeededRandom instance","depth":2},{"value":"Agent prng","depth":2}],"frontmatter":{"title":"Random Number Generators","toc":false,"experimental":null}},"site":{"siteMetadata":{"title":"Simudyne Docs","latestVersion":"2.6"}}},"pageContext":{"absolutePath":"/home/vsts/work/1/s/content/2.1/reference/models/prng.md","versioned":true,"version":"2.1","kind":"reference","pagePath":"/reference/models/prng","chronology":{"prev":{"name":"Model Configuration","path":"/reference/models/model-configuration"},"next":{"name":"Agents","path":"/reference/agents"}},"lastUpdated":"2026-04-21T13:56:54.832Z"}}