Merge pull request #369 from pillis/master

SPARK-961 Add a Vector.random() method

Added method and testcases
This commit is contained in:
Reynold Xin 2014-01-10 15:32:19 -08:00
commit 0eaf01c5ed
2 changed files with 52 additions and 0 deletions

View file

@ -17,6 +17,8 @@
package org.apache.spark.util
import scala.util.Random
class Vector(val elements: Array[Double]) extends Serializable {
def length = elements.length
@ -124,6 +126,12 @@ object Vector {
def ones(length: Int) = Vector(length, _ => 1)
/**
* Creates this [[org.apache.spark.util.Vector]] of given length containing random numbers
* between 0.0 and 1.0. Optional [[scala.util.Random]] number generator can be provided.
*/
def random(length: Int, random: Random = new XORShiftRandom()) = Vector(length, _ => random.nextDouble())
class Multiplier(num: Double) {
def * (vec: Vector) = vec * num
}

View file

@ -0,0 +1,44 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.spark.util
import scala.util.Random
import org.scalatest.FunSuite
/**
* Tests org.apache.spark.util.Vector functionality
*/
class VectorSuite extends FunSuite {
def verifyVector(vector: Vector, expectedLength: Int) = {
assert(vector.length == expectedLength)
assert(vector.elements.min > 0.0)
assert(vector.elements.max < 1.0)
}
test("random with default random number generator") {
val vector100 = Vector.random(100)
verifyVector(vector100, 100)
}
test("random with given random number generator") {
val vector100 = Vector.random(100, new Random(100))
verifyVector(vector100, 100)
}
}