0

ユーザーのデータベース (番号が割り当てられている) と、2 つの配列に正常に取り込まれているアイテムの Excel リストがあります。1 つはユーザーの配列で、もう 1 つは Excel (タスク) のアイテムの配列です。このシナリオを表すロジックを考えようとしています。

DB 内のユーザーは、0 ~ 5 の番号で存在できます。基本的に、これは週に何日の休みがあるかを表し、各人が Excel の範囲内で取得できるアイテムの数を分割して、アイテムを正しく配分するのに役立ちます (ブール値インジケーターを使用して含めるか除外するかを示す前に) . 例えば:

User   |  Present #
-------------------
Jared  |  0 'present daily
John   |  0 'present daily
Mary   |  1 'off 1 day
Tom    |  5 'off rotation entirely

質問: これを、全体で何個のアイテムを取得する必要があるかに関連付ける最良の方法は何ですか?

私は期待JaredJohn、ほとんどを得るか、Mary少し少なくすることを期待し、Tom決して含まれることはありません. 50個のアイテムがあるとしましょう。

私が考えた1つの方法は、名前をExcelにループさせながら、配列の先頭に戻るたびに「パス」としてカウントすることです(Excelセルに割り当てている間)。

    0 を持つ人は、各パスをスキップされることはありません
    1 の場合は 4 パスごとにスキップされます
    2 の場合は 3 パスごとにスキップされます
    3 を持っている人は 2 回目のパスごとにスキップされます
    4 を持っている人は 1 回おきにスキップされます
    5の人は決して含まれません(簡単)

私の例では、Jared常にJohn使用され、Mary4 パスごとにスキップされ、使用さTomれることはありません。

これは理にかなっていますか?
N回ごとに配列をループするのをキャッチする最良の方法は何ですか?
私はこれを正しい方法で行っていますか?

4

2 に答える 2

1

多くのループとこれが引き起こす可能性のある遅延を避けるために、「需要率」を計算することをお勧めします。
在庫状況に応じて配布されるアイテムは 50 個 (例では) あります。利用可能性は、0 現在の毎日から5完全にオフ ローテーションとして表示されますが、これらを逆に扱う方が簡単です。「オフ ローテーション」ではリソースが利用できないため0、「現在毎日」ではすべての平日 (?) が利用可能であるため、5.

ユーザー | 現在の # テーブルは次のようになります。

 
ジャレド 5
ジョン 5
メアリー 4
トム 0
      14

したがって、50 アイテムをカバーするために 14 人日が利用可能であり、1 人日あたり平均 3.57 アイテムです。1 人 1 日あたり 3 アイテムと 8 アイテムを超えるアイテムを分割できないと仮定します。'3 each' は、(修正された) テーブル値に INT(item_total/table-total) を掛けることで、1 回のパスで割り当てることができます。したがって、Jared と John の結果は 5x3 = 15 で、Mary の場合は 4x3 = 12 です。

ただし、42 個しかないため、8 個はまだ割り当てられていません。3,3,2 'extras' は明らかですが (結果として 18,18,14 になります)、プログラミングはそれほど簡単ではありません。INT 式からの残差がある場合は、その結果 +1 (つまり、ここでは 3 ではなく 4) を使用することをお勧めします。 6人がノックオフされるまで(可能な場合)オフにします。

于 2013-08-02T13:32:03.633 に答える
0

毎週のタスクを 1 日 1 つずつ割り当てているように見えるため、これは完全には意味がありません。

0 を持つ人は、各パスをスキップされることはありません

1 の場合は 4 パスごとにスキップされます

2 の場合は 3 パスごとにスキップされます

3 を持っている人は 2 回目のパスごとにスキップされます

4 を持っている人は 1 回おきにスキップされます

5の人は決して含まれません(簡単)

ただし、上記を前提として、個人の場合はユーザーをスキップしますTaskAssignmentsAttempted Mod (6 - Present#) = 0

おそらくあなたが必要です:

0 のユーザーはスキップされません

1 の人は 5 パスごとに 1 回スキップされます

2 のプレイヤーは 5 回のパスごとに 2 回スキップされます

3 を持っている人は、5 回のパスごとに 3 回スキップされます

4 を持っている人は、5 回のパスごとに 4 回スキップされます

5 の人は常にスキップされます。

5 - Present#上記を仮定すると、個人が個人より小さい場合、ユーザーをスキップしますTaskAssignmentsAttempted Mod 5

これらのいずれかを使用して、各ユーザーが割り当てを試みた回数 (成功または失敗) と、実際の割り当てを追跡する必要があります。

于 2013-08-01T22:44:18.510 に答える