on master help sign in
Merge pull request #281 from mgold/dev2
0b11d4fEvan Czaplicki
libraries/Native/Signal/Random.js+15−1
@@ -6,6 +6,7 @@ Elm.Native.Random.make = function(elm) {
6 if (elm.Native.Random.values) return elm.Native.Random.values;
6 if (elm.Native.Random.values) return elm.Native.Random.values;
7
7
8 var Signal = Elm.Signal.make(elm);
8 var Signal = Elm.Signal.make(elm);
9+ var List = Elm.Native.List.make(elm);
9
10
10 function range(min, max, signal) {
11 function range(min, max, signal) {
11 function f(x) { return Math.floor(Math.random() * (max-min+1)) + min; }
12 function f(x) { return Math.floor(Math.random() * (max-min+1)) + min; }
@@ -17,8 +18,21 @@ Elm.Native.Random.make = function(elm) {
17 return A2( Signal.lift, f, signal );
18 return A2( Signal.lift, f, signal );
18 }
19 }
19
20
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+
20 return elm.Native.Random.values = {
32 return elm.Native.Random.values = {
21 range: F3(range),
33 range: F3(range),
22− flt: flt
34+ flt: flt,
35+ floatList: flts
23 };
36 };
37+
24};
38};
libraries/Random.elm+7
@@ -21,3 +21,10 @@ The new values are random numbers in [0..1).
21-}
21-}
22float : Signal a -> Signal Float
22float : Signal a -> Signal Float
23float = Native.Random.flt
23float = 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