Pfi*_*nnn 1 random erlang distribution
我的方法如下:
Num 1 和 Num 2 被赋予范围的开始和结束的数字,产生的随机整数可以是 num 1 或 num 2。
Num1 + rand:uniform(Num2-Num1).
Run Code Online (Sandbox Code Playgroud)
例子:
数字 1 = 3 数字 2 = 20
rand:uniform 返回 1 到 17 之间的值。然后我再次添加 Num 1,因此随机值在给定范围内。
我看到这个实现的问题是我的随机数的分布,因为范围内最低的数字有更高的概率,这取决于 0 和 num 1 之间的距离以及 num 1 和 num 2 之间的范围。
我希望有一个更简单、更优雅的解决方案,它可以均匀地分布整数......
由于rand:uniform(17)返回一个介于 1 和 17 之间的数字,添加 3 将给出一个介于 4 和 20 之间的数字。试试这个:
rand:uniform(Num2 - Num1 + 1) + Num1 - 1
Run Code Online (Sandbox Code Playgroud)
如果Num1是 3 并且Num2是 20,那将变成rand:uniform(18) + 2,给出一个介于 3 和 20 之间的随机数。
| 归档时间: |
|
| 查看次数: |
72 次 |
| 最近记录: |