<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Hi guys,<div><br></div><div>This one fires a lot of collisions (<a href="http://schemecookbook.org/Erlang/NumberRandomNumber">http://schemecookbook.org/Erlang/NumberRandomNumber</a>):</div><div><br></div><div>------------------</div><div><div>test() -></div><div>    crypto:start(),</div><div>    N = 10000,</div><div>    io:format("Generate ~p random passwords and check for collisions ...~n", [N]),</div><div>    test(N, dict:new(), 0).</div><div>test(0, _, C) -></div><div>    io:format("Number of collisions: ~p~n", [C]);</div><div>test(N, Dict, C) -></div><div>    Password = passwd(),</div><div>    case dict:find(Password, Dict) of</div><div>        {ok, _} -> %% collision detected</div><div>            test(N - 1, Dict, C + 1);  </div><div>        error -></div><div>            test(N - 1, dict:append(Password, 1, Dict), C)</div><div>    end.</div><div><br></div><div>passwd() -></div><div>    passwd(8).</div><div>passwd(Length) -></div><div>    {A1,A2,A3} = now(),</div><div>    random:seed(A1, A2, A3),</div><div>    lists:flatten(lists:foldl(fun(_,AccIn) -></div><div>                                      [random:uniform(90) + 32 | AccIn] end,</div><div>                              [], lists:seq(1,Length))).</div></div><div><br></div><div>----------------</div><div><br></div><div><div>> passwd:test().</div><div>Generate 10000 random password and check for collisions ...</div><div>Number of collisions: 1182</div></div><div><br></div><div>Anything better guys? Something with less collisions if possible.</div><div><br><div apple-content-edited="true">
<div>Regards,</div><div>Zabrane</div>
</div>
<br></div></body></html>