|
|
1
13
对。要更改生成的数字的分布。 http://en.wikipedia.org/wiki/Random_number_generation#Generation_from_a_probability_distribution |
|
|
2
2
一个简单的解决方案是生成一个包含100个元素的数组。
作为一个简单的例子,假设您希望数字1和10更频繁地出现,则可以在数组中过度表示它。也就是说,数列中的第一个有20次,数列中的第十个有20次,其余的数均匀分布。然后使用0-100之间的随机数作为数组索引。与其他数字相比,这将增加你获得1或10的概率。 |
|
|
3
2
你需要一张分布图。从随机输出[0,1]映射到所需的分布结果。就像[0,.3]会产生0,[3,.5]会产生1,依此类推。 |
|
|
4
1
典型的方法是生成比输出更大的数字范围。例如,让我们从5开始作为以频率N出现的基线。假设您希望4或7在频率2N出现,3或8在频率3N、2或9出现,频率4N出现,0或10在频率5N出现。
当然,这并不会改变原始生成器返回的值——它只允许我们编写一个自己的生成器,根据我们选择的分布生成数字。 |
|
|
5
0
|
|
|
6
0
你能影响
但是你可以做的是创建你自己的随机数生成器,在你需要的分布中产生数字。 |
|
|
7
0
可能有无数种方法可以做到这一点,您可能需要考虑概率函数的确切形状/曲率。
它可能在一行中完成,但这里是使用现有函数定义的多行方法(命名为
|
|
|
8
0
一个基本的结果是,如果U是均匀分布的随机变量,F是要从中抽样的累积分布,那么Y=G(X),其中G是F的倒数,F是其累积分布。这不一定是最有效的方法,从各种分布中产生随机数本身就是一个研究子领域。但对于一个简单的转换,它可能只会起到作用。和你的例子一样,F(x)可以是4*(x-.5)^3+.5,它似乎满足了所有的约束条件,而且很容易反转并用作基本随机数生成器的转换。 |
|
|
feasega · 聚合物模拟-2个节点之间的最短路线,适用于所有节点 1 年前 |
|
|
Alisa Petrova · 在有向图中更改一对顶点以创建循环 1 年前 |
|
|
b39b332d · 使用C++标准库实现高效间隔存储 1 年前 |
|
ABGR · 二叉树的直径——当最长路径不通过根时的失败案例 1 年前 |
|
|
EpicAshman · 数独棋盘程序中同一列和同一行出现两次的数字 1 年前 |