作者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