2

同じ数のセルにつながるグリッド サイズ (x x y) のすべての可能な値を計算しようとしています。たとえば、2x2 グリッドのセル サイズは 4 です。y をx、および合計は、たとえば4000になります。したがって、Rにxとyのすべての可能な正の整数値を計算させたいと思います。ここで

function (total) {
x*y=total
x/y=2 
x!=total 
y!= total.
}

正の整数を取得し、さまざまな解決策を検討する 1 つの方法は、合計が元の値よりも最大 10% 大きくなるようにすることだと思います (ただし、グリッドは少なくとも合計値と同じくらい大きくする必要があります)。この場合、関数は tot (例: 4000) と許容範囲 (例: 10%) の 2 つのフィールドを持つことができます。合計 (上記のスケッチ関数で使用) は、tot と (tot+tolerance*tot) の間にある必要があります。

いくつかのセル サイズがあるため、4000 は一例にすぎません。正の整数のみを返し、X と Y の行列を返す簡単な関数を作成しようとしています。

何か案は?

どうもありがとう

4

1 に答える 1

2

これはどうですか:

possible.sizes <- function(total, tolerance) {

   min.total <- total
   max.total <- total * (1 + tolerance)

   min.y <- ceiling(sqrt(min.total/2))
   max.y <- floor(sqrt(max.total/2))

   if (max.y < min.y)
      return(data.frame(x=numeric(0), y=numeric(0)))

   y <- seq(min.y, max.y)
   x <- 2*y

   return(data.frame(x=x, y=y))
}

possible.sizes(4000, 0.1)
#    x  y
# 1 90 45
# 2 92 46
于 2012-05-26T13:52:10.780 に答える