summaryrefslogtreecommitdiff
path: root/src/library/scala/util/Random.scala
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2009-08-25 14:51:19 +0000
committerPaul Phillips <paulp@improving.org>2009-08-25 14:51:19 +0000
commit8aed300faa06fbae28f4108be6c9ef2a4b9902ef (patch)
tree7709634a6bc7da645694b0e985eb12b068e9a7a2 /src/library/scala/util/Random.scala
parent7aa4764ed2fc706427509f13bc10bd7d5704a6ea (diff)
downloadscala-8aed300faa06fbae28f4108be6c9ef2a4b9902ef.tar.gz
scala-8aed300faa06fbae28f4108be6c9ef2a4b9902ef.tar.bz2
scala-8aed300faa06fbae28f4108be6c9ef2a4b9902ef.zip
Added nextString(length: Int) to util.Random.
Diffstat (limited to 'src/library/scala/util/Random.scala')
-rw-r--r--src/library/scala/util/Random.scala17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/library/scala/util/Random.scala b/src/library/scala/util/Random.scala
index 5a86a1a278..b88411605f 100644
--- a/src/library/scala/util/Random.scala
+++ b/src/library/scala/util/Random.scala
@@ -68,6 +68,23 @@ class Random(val self: java.util.Random) {
*/
def nextLong(): Long = self.nextLong()
+ /** Returns a pseudorandomly generated String. This routine does
+ * not take any measures to preserve the randomness of the distribution
+ * in the face of factors like unicode's variable-length encoding,
+ * so please don't use this for anything important. It's primarily
+ * intended for generating test data.
+ *
+ * @param length the desired length of the String
+ * @return the String
+ */
+ def nextString(length: Int) = {
+ def toChar(ch: Int): List[Char] =
+ try new String(Array(ch), 0, 1) toList
+ catch { case _: IllegalArgumentException => Nil }
+
+ Stream continually toChar(nextInt()) flatMap (x => x) take length mkString
+ }
+
def setSeed(seed: Long) { self.setSeed(seed) }
}