on master help sign in
Merge pull request #281 from mgold/dev2

Random.floatList : Signal Int -> Signal [Float]

commit0b11d4f0bda479f7ea0a949a7ee37d15eebeef6d authorEvan Czaplicki <info@elm-lang.org> dateMon 7 Oct 2013, 19:52 (13 years ago) parentcc5295dc99d7d7
2 files changed+22−1
libraries/Native/Signal/Random.js+15−1 libraries/Random.elm+7
libraries/Native/Signal/Random.js+15−1
@@ -6,6 +6,7 @@ Elm.Native.Random.make = function(elm) {
66 if (elm.Native.Random.values) return elm.Native.Random.values;
77
88 var Signal = Elm.Signal.make(elm);
9+ var List = Elm.Native.List.make(elm);
910
1011 function range(min, max, signal) {
1112 function f(x) { return Math.floor(Math.random() * (max-min+1)) + min; }
@@ -17,8 +18,21 @@ Elm.Native.Random.make = function(elm) {
1718 return A2( Signal.lift, f, signal );
1819 }
1920
21+ function flts(signal) {
22+ function f(x) {
23+ var arr = new Array(Math.max(0,x));
24+ for (var i = 0; i < x; i++) {
25+ arr[i] = Math.random();
26+ }
27+ return List.fromArray(arr);
28+ }
29+ return A2( Signal.lift, f, signal );
30+ }
31+
2032 return elm.Native.Random.values = {
2133 range: F3(range),
22− flt: flt
34+ flt: flt,
35+ floatList: flts
2336 };
37+
2438};
libraries/Random.elm+7
@@ -21,3 +21,10 @@ The new values are random numbers in [0..1).
2121-}
2222float : Signal a -> Signal Float
2323float = Native.Random.flt
24+
25+{-| Produces a new signal of lists that changes whenever the input signal
26+changes. The input signal specifies the length of the random list. Each value is
27+a random number in [0..1).
28+-}
29+floatList : Signal Int -> Signal [Float]
30+floatList = Native.Random.floatList