作者qrtt1 (thinking in java)
标题Re: [问题] 另一个乱数矩阵的问题
时间Tue Mar 14 15:37:15 2006
※ [本文转录自 qrtt1 信箱]
作者:
[email protected]
标题: Re: [转录][问题] 另一个乱数矩阵的问题
时间: Tue Mar 14 15:36:27 2006
作者: qrtt1 (the moment) 看板: qrtt1
标题: Re: [转录][问题] 另一个乱数矩阵的问题
时间: Tue Mar 14 15:22:03 2006
※ 引述《qrtt1 (the moment)》之铭言:
: ※ [本文转录自 qrtt1 信箱]
: 作者: [email protected] ([email protected])
: 标题: [问题] 另一个乱数矩阵的问题
: 时间: Tue Mar 14 14:45:38 2006
: 作者: oniki (宇治金时月见雪) 看板: java
: 标题: [问题] 另一个乱数矩阵的问题@@"
: 时间: Fri Mar 10 14:29:44 2006
: 首先很谢谢各位的回答
: 小弟受益良多:p
: 现在又有个问题了>"<
: 我要产生一个矩阵是像下面的样子:
: 0 1 0 1 1 1 0 1
: 1 0 0 0 1 1 1 0
: 0 1 1 0 0 1 0 0
: 1 1 0 1 0 0 0 1
: 1 0 0 1 1 0 1 0
: 每个element都是0或1
: 这个比较简单点 但是我想加入限制
: 举例说
: 上面那个矩阵 row1的1的总数是5
: row2的1的总数是4
: row3 3
: row4 4
: row5 4
: 这样平均值是(5+4+3+4+4)/5=4
: 我要用mean跟min, max这三个值来控制每一列的1的出现数目
: 例如 我设定mean=4, min=3, max=5
: 就是设定让整个matrix的每一个row的平均1总数是4
: 但当然不一定每个row的1总数都是4
: 会乱数落在3到5之间
: 但是整体要符合平均1总数是4就对了
: 想请问各位高手该怎麽做呢 谢谢各位<(_ _)>
沉淀了几天, 现在脑袋比较清醒了一点, 再来想这个问题
好像没有那麽复杂了 假设我们有一个m*n的矩阵,为了
方便解说我们先把为1的元素往左塞。
min: 为黄色
max: 为红色
mean: 为绿色
┌ ------------- n ------------- ┐
IIIIIIIIIIIIIIIIIIIIIIIIIIIOOOO
IIIIIIIIIIIIIIIIIIOOOOOOOOOOOOO
IIIIIIIIIIIIIIIIOOOOOOOOOOOOOOO
IIIIIIIIIIIIIIIIOOOOOOOOOOOOOOO m
IIIIIIIIIIIIIIIIOOOOOOOOOOOOOOO
IIIIIIIIIIIIIIIIIIIIIIIOOOOOOOO
IIIIIIIIIIIIIIIIIIIIIIIIIIIIOOO
...............................
...............................
IIIIIIIIIIIIIIIIIIIOOOOOOOOOOOO
└ ┘
要满足min, max, mean的条件
首先要先计算能至少能自由按排的元素有那些
总共要放入的元素有: m*mean 个 -- (a)
要符合min条件的元素有: m*min 个 -- (b)
二式相减得
(a) - (b) = freeElement -- (c)
若, freeElement <=0
则没有多余的元素满足max条件
那freeElement至少满足一列为max者条件为:
freeElement > (max-min) 移项
freeElement - (max-min) > 0 -- (d)
若满足(c)(d)二式条件则矩阵是可能做出来的
=============================================
谈完了条件, 来谈实作.
(您可以透过条件式判断要不要执行产生矩阵的动作)
首先我们要先将矩阵的min部填满
IIIIIIIIIIIIIIIIIII
IIIIIIIIIIIIIIIIIII
IIIIIIIIIIIIIIIIIII
IIIIIIIIIIIIIIIIIII
...................
...................
IIIIIIIIIIIIIIIIIII
接下来就依实作的人嗜好要如何分散freeElement
到各row的尾端
弟在此提供想法之一,
分一列分配(int)rand(max-min)个
iterative直到所有freeElement分配完成
再执行修剪程序:若多超出max时, 则随机塞入未达max的row
若无则随机由元素个数大於min+1者抽出补上, 直到满足max条件
最後, 把每一个row搅一搅成随机状
--
我所追求的纯粹只是任性,完全的任性。 -- 挪威的森林
--
※ Post by qrtt1 from 163.26.34.214 ...
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 163.26.34.214