💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、豆包、星火、月之暗面及文生图、文生视频 广告
```erlang 1.random:uniform(  ) -> float(). 随机浮点数 2.random:uniform( N::integer() ) -> integer() ->小于N的随机整数 3.random:seed() -> ran().  用默认值产生随机数种子。 4.用法             Time = erlang:now(),             random:seed( Time ),             Ran1 = random:seed( Time ),             {New_Num, _} = random:uniform_s( Num, Ran1 ), 看它的代码实现: [plain]view plaincopy uniform() -<       {A1, A2, A3} = case get(random_seed) of                  undefined -< seed0();                  Tuple -< Tuple              end,       B1 = (A1*171) rem 30269,       B2 = (A2*172) rem 30307,       B3 = (A3*170) rem 30323,       put(random_seed, {B1,B2,B3}),       R = A1/30269 + A2/30307 + A3/30323,       R - trunc(R).   每次调用会更新进程字典里的random_seed变量,这样在同一个进程内每次调用random:uniform()时,随机数种子都不同,所以生成的随机数都不一样(调用完random:uniform()后,可以用get(random_seed)查看更新后的种子值)。 但是如果是不同的进程分别调用random:uniform(),因为随机种子更新的算法是一样的,所以每次各进程的随机数种子也是相同的,从而生成的随机数也是一样的,要想让不同进程生成的随机数不同,要手动为每个进程设置不同的种子,常用的是用erlang:now,比如: [plain]view plaincopy random:seed(erlang:now()),   random:uniform().   不过如果每个进程调用random:seed(erlang:now())太接近,种子值会比较接近,生成的随机数也会比较接近,更好的方法是用一个单独的进程来生成种子,保证每次的种子值相差比较大: [plain]view plaincopy Seed = {random:uniform(99999), random:uniform(999999), random:uniform(999999)}   然后每次调用random:uniform()前从该种子生成进程获取最新的种子值,seed()之。 1case get(random_seed) of 2  undefined -> 3   random:seed(now()); 4  _Tuple -> 5   ok 6 end, 7 random:uniform(Max). 1.<<A:32,B:32,C:32>> = crypto:strong_rand_bytes(12) . ```