<p>In <a href="https://github.com/mlpack/mlpack/pull/726#discussion_r73697623">src/mlpack/core/tree/binary_space_tree/rp_tree_max_split_impl.hpp</a>:</p>
<pre style='color:#555'>&gt; +
&gt; +  return true;
&gt; +}
&gt; +
&gt; +template&lt;typename BoundType, typename MatType&gt;
&gt; +void RPTreeMaxSplit&lt;BoundType, MatType&gt;::GetRandomDirection(
&gt; +    arma::Col&lt;ElemType&gt;&amp; direction)
&gt; +{
&gt; +  arma::Col&lt;ElemType&gt; origin;
&gt; +
&gt; +  origin.zeros(direction.n_rows);
&gt; +
&gt; +  for (size_t k = 0; k &lt; direction.n_rows; k++)
&gt; +    direction[k] = math::Random(-1.0, 1.0);
&gt; +
&gt; +  ElemType length = metric::EuclideanDistance::Evaluate(origin, direction);
</pre>
<p>I think you could simplify this:</p>

<pre><code>direction.randu(); // Fill with [0, 1].
direction -= 0.5; // Shift to [-0.5, 0.5].
const double norm = arma::norm(direction); // Get length for normalization.
if (norm == 0)
{
  const size_t k = math::RandInt(direction.n_rows);
  direction[k] = 1.0;
  length = 1.0;
}

// Normalize.
direction /= length;
</code></pre>

<p style="font-size:small;-webkit-text-size-adjust:none;color:#666;">&mdash;<br />You are receiving this because you are subscribed to this thread.<br />Reply to this email directly, <a href="https://github.com/mlpack/mlpack/pull/726/files/e14a26f3e209af0608cb61ecaa5e30f253e72e9b#r73697623">view it on GitHub</a>, or <a href="https://github.com/notifications/unsubscribe-auth/AJ4bFG8U-Buuv4GH--mxZU0AnLZ8oJHVks5qc0PFgaJpZM4JOuGE">mute the thread</a>.<img alt="" height="1" src="https://github.com/notifications/beacon/AJ4bFF8XqKneJ2S8p7Oq02jJSlozFYfCks5qc0PFgaJpZM4JOuGE.gif" width="1" /></p>
<div itemscope itemtype="http://schema.org/EmailMessage">
<div itemprop="action" itemscope itemtype="http://schema.org/ViewAction">
  <link itemprop="url" href="https://github.com/mlpack/mlpack/pull/726/files/e14a26f3e209af0608cb61ecaa5e30f253e72e9b#r73697623"></link>
  <meta itemprop="name" content="View Pull Request"></meta>
</div>
<meta itemprop="description" content="View this Pull Request on GitHub"></meta>
</div>

<script type="application/json" data-scope="inboxmarkup">{"api_version":"1.0","publisher":{"api_key":"05dde50f1d1a384dd78767c55493e4bb","name":"GitHub"},"entity":{"external_key":"github/mlpack/mlpack","title":"mlpack/mlpack","subtitle":"GitHub repository","main_image_url":"https://assets-cdn.github.com/images/modules/aws/aws-bg.jpg","avatar_image_url":"https://cloud.githubusercontent.com/assets/143418/15842166/7c72db34-2c0b-11e6-9aed-b52498112777.png","action":{"name":"Open in GitHub","url":"https://github.com/mlpack/mlpack"}},"updates":{"snippets":[{"icon":"PERSON","message":"@rcurtin in #726: I think you could simplify this:\r\n\r\n```\r\ndirection.randu(); // Fill with [0, 1].\r\ndirection -= 0.5; // Shift to [-0.5, 0.5].\r\nconst double norm = arma::norm(direction); // Get length for normalization.\r\nif (norm == 0)\r\n{\r\n  const size_t k = math::RandInt(direction.n_rows);\r\n  direction[k] = 1.0;\r\n  length = 1.0;\r\n}\r\n\r\n// Normalize.\r\ndirection /= length;\r\n```"}],"action":{"name":"View Pull Request","url":"https://github.com/mlpack/mlpack/pull/726/files/e14a26f3e209af0608cb61ecaa5e30f253e72e9b#r73697623"}}}</script>