【问题标题】:Random array special随机数组特殊
【发布时间】:2010-06-20 23:25:55
【问题描述】:

如何制作特殊的随机数组。我有array(1=>35,2=>25,3=>40)。如何使数组显示特殊元素的可能性。前任。 如果我想从数组中获取 100 个元素。会是

35/100 +-10 - must bee 1 element,
25/100 +-10 = must be 2 element,
40/100 +-10 - must be 3 element.

元素必须是随机的,但大多数元素 +-10。我知道这段代码可能是什么原因:

$a = array_fill(1, 35, 1);
$b = array_fill(36, 60, 2);
$c = array_fill(61, 100, 3);

数组看起来像array(35 elements with value 1, 25 elements with value 2, 40 elements with value 3) 并使用 merge 和 array_rand 我会得到我的代码。但我不想要这个代码。它将创建 100 个项目。需要优化这段代码。这是可能的。帮助。 :-)

【问题讨论】:

  • 您想创建一个包含 100 个元素的数组,因此值为 1 的元素数量为 a in [25,45],值为 2 的元素数量为 b in [15,35],值为 3 的元素数量是c in [30,50]?您的问题已详细说明,您需要说明abc 遵循哪些分布。没有它,我们无法分辨,例如如果您得到a=25c=50 的可能性一样。

标签: php optimization arrays random


【解决方案1】:

您在寻找加权随机数组吗?

检查这个例子:

http://20bits.com/articles/random-weighted-elements-in-php/

【讨论】:

  • @Valdas 这与您要求的不一样...由于您的两个限制,您绝对没有要求分类分布 - 变化仅为 +- 10 并且所有的总和为100.
猜你喜欢
  • 2011-03-05
  • 1970-01-01
  • 2013-05-31
  • 1970-01-01
  • 2015-03-18
  • 2014-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多