gpt4 book ai didi

random - Erlang - 带有 Makeref 的随机数生成器

转载 作者:行者123 更新时间:2023-12-04 17:40:32 24 4
gpt4 key购买 nike

我正在尝试快速生成一个足够随机的数字。

现在我正在使用以下内容:

uniqueID() ->   C = random:uniform(9999) ,   %%%DO SPEED TEST
random:seed(C,random:uniform(99),random:uniform(99)),
{_, {H, Min, S}} = calendar:universal_time(),
{A, B} = statistics(wall_clock),
(A*B) +((H + C + Min) * S).

与 make_ref() 之类的东西相比,它花费的时间太长。
6> make_ref().
#Ref<0.0.0.74>

如何获取唯一的 ref 并将其解析为整数?

比如00074

谢谢您的帮助。

最佳答案

您确定要使用erlang:make_ref/0吗?对于独特的数字? Refs 仅对一个 erlang vm 的一次启动是唯一的——它们是可重复的、可预测的,并且如果您打算将它们用于除 erlang 消息中的标签以外的任何其他内容以匹配请求和回复,则它们会成为糟糕的唯一标识符。

您可以通过将 ref 格式化为字符串( erlang:ref_to_list/1 )然后对其进行解析来实现。

但是,我认为最好的主意是使用 crypto:rand_bytes/1给自己一个 N随机字节的字节二进制,或 crypto:rand_uniform/2如果您需要某个范围内的随机整数。这种方法至少为您生成的随机整数的质量提供了一些保证(请参阅 openssl rand_bytes documentation )。

关于random - Erlang - 带有 Makeref 的随机数生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4962321/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com