我想知道是否有一種甜美的方式,我可以在LINQ或類似的東西上做到這一點,但我試圖最均勻地分佈X部分的X字母字母整數> 0 & & < = 26.例如,這裏可能有一些可能的輸出。大多數均勻地分佈在字母順序上的字母
- X = 1:1個分區26
- X = 2:13
- 2個分區X = 3:9 2個 分區和8
- 等一個分區....
最終,我不想有任何分區,最終沒有得到至少一個,我的目標是讓他們實現最均勻的分佈,分區大小之間的差異範圍是一樣小盡可能地。
這是我嘗試orginally代碼:
char[] alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".ToCharArray();
int pieces = (int)Math.Round((double)alphabet.Count()/numberOfParts);
for (int i = 0; i < numberOfParts.Count; ++i) {
char[] subset = i == numberOfParts.Count - 1 ? alphabet.Skip(i * pieces).ToArray()
: alphabet.Skip(i * pieces).Take(pieces).ToArray();
... // more code following
這似乎首先是工作的罰款,但我在測試中意識到,有一個問題,當X基於這種邏輯,我得到的是10。 8組3和1組2,離開第10組0,這是不好的,因爲我正在進行最均勻的分配。
在這種情況下,10的最理想分佈將是6組3和4組2.如何實現這個想法?
你的問題聽起來很具體和不明確,你能詳細說明你想在這裏實現什麼?這課程也是?如果是這樣,這不是一個問題,但是可以告訴我們,因爲這可能會影響您得到的答案! –
不,這是不是作業,我試圖根據開始的信件分發消息到不同的位置。 –
夠公平 - 你能詳細說明原因嗎?我有一種感覺,這裏有一個聰明的答案和一個很好的答案! –