我需要用随机数填充大小为n
的二维数组,但我需要生成的随机数的n(n-1)/2 * .2
或.4
或.8
为-1
我需要它们展开。有没有办法做到这一点?我一直在考虑填充数组时经常使它将该元素设置为-1
并使用计数来跟踪但是无法确定那些-1
是否在数组中分开,这有可能吗?
答案 0 :(得分:2)
我能想到的最简单的方法是:
-1
s std::random_shuffle
或类似的东西。 执行此操作后,您可以确定您拥有正确数量的-1
,并且它们将随机分发。
答案 1 :(得分:0)
如果设置数组是一次性操作(即,您不会不断更改元素并期望-1
值的比例保持不变(1) ),您可以先不使用-1
值填充数组,类似于(伪代码):
for index in 0 .. array.size():
value = -1
while value == -1:
value = yourRandomFunctionIncludingNegOne()
array[index] = value
然后,您只需在填充后将给定数量的它们更改为-1
:
for index in 0 .. array.size() / 5: # 20%
index = random(array.size())
do:
index = random(array.size())
while array[index] == -1
array[index] = -1
(1)如果数组不断变化,你仍然可以使用这个方法,你只需要跟踪negative-one
和{{1计算和动态调整。它有点复杂但仍然可行。