我有一個已知的 n 條目串列。我也有已知數量的 k 點。
我需要將這些 k 點盡可能地分布在 n 個條目中。最終結果是我知道兩點之間的距離(d)。
例子:
因此,如果我們有 n={0, 1, 2, 3, 4, 5} 項 (n=6) 和 k=3,并且我們假設我們可以始終從 0 開始,那么我們最終會得到以下結果0、2 和 4 各得一個點,因為它們之間的“距離”都是 1(d=1)。
我一直在絞盡腦汁思考如何計算 d 一個小時。我不知道該怎么做。
- n 將始終是整數串列。
- k 總是小于 n 和一個整數
- d 應該始終是一個整數,其中 k*d <= n。
我嘗試使用 n 的 sqrt,但如果我得到分數,那將不起作用。
我知道這聽起來像是一項數學作業,但這不是家庭作業。這只是我坐下來玩游戲的問題。
我如何計算d?我使用 C#。
原來我真正需要的是在 n 個元素上離散地分布 k 個索引。
在此處查看它的示例;https://youtu.be/SC0qwkNzvmo
你可以看到炸彈是如何在玩家之間分配的。這就是我需要的,但很難解釋。
uj5u.com熱心網友回復:
在我看來,你只需要這個:
int[] indices = new [] { 0, 2, 4, };
double distance =
Enumerable
.Range(0, indices.Length)
.SelectMany(
i => Enumerable.Range(i 1, indices.Length - i - 1),
(i, j) => Math.Sqrt(indices[i] * indices[i] indices[j] * indices[j]))
.Average();
如果您試圖k在元素之間離散地分布索引n,那么就是這樣:
int n = 6;
int k = 3;
int[] bs =
Enumerable
.Range(0, k)
.Select(i => i * n / k)
.ToArray();
這給了0, 2, 4.
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/531563.html
標籤:C#数学
