<img src="images/logo.png" alt="Kaos" width="416" height="224">
# Kaos
A combinator library for Erlang to generate random values and data structures.
## Getting Started
58> {ok, [S]} = kaos:generate(kaos:string_of(kaos:integer(4, 9), kaos:integer($a, $z)), 112, 1).
{ok,[<<"ypwcby">>]}
## Build
$ rebar3 compile
## Running Example Files
$ rebar3 as examples shell
### Generate Random JSON
[examples/rand_json.erl](examples/rand_json.erl)
```erlang
1> rand_json:json(12).
[
{
"aavquho": { "sitygndpvol": 2 },
"butquytalbd": [
[-8,{
"mq": false,
"zkcrikbkpb": 5.512894632507528
}],
"oeggzc",
true
],
"q": 6.649188725917739,
"qb": [
[false,false,"suzsscusndhq"],
"ysvoe",
"yjidecscisc"
]
},
false,
false
]
ok
```
### Generate Random ASCII Graphics
[examples/rand_box.erl](examples/rand_box.erl)
```erlang
2> rand_box:box().
╕╒╜╔╖╒╛╙╗╛╖
╙╝╗╙╗╙╓╝╚╛╗
╙╒╜╕╛╓╔╕╗╙╝
╗╝╚╖╝╗╕╛╕╛╘
╝╘╘╜╕╓╖╒╓╝╗
╔╘╚╜╙╘╓╕╒╜╗
╙╕╗╖╝╛╗╖╕╗╝
╓╗╛╖╚╝╓╖╒╝╕
╒╛╒╜╛╚╖╕╝╔╓
╝╓╛╖╝╚╙╕╝╛╝
╒╛╝╛╝╖╛╒╒╝╛
ok
```
### Generate Random Math Expression
[examples/rand_expr.erl](examples/rand_expr.erl)
```erlang
3> rand_expr:expr(3).
( -39 - ( ( 29 + -52 ) - ( -90 + -65 ) ) )
```
### Generate Random Password
[examples/rand_pass.erl](examples/rand_pass.erl)
Generates a random password of 6 or more characters in length
based on the parameter, and must satisfy:
- 2 special characters
- 1 uppercase letter
- 1 lowercase letter
- 1 number
```erlang
4> rand_pass:pass(18).
"6+LP!J}vaj1sg(+K:("
```