タグ付けされた質問 「language-agnostic」

このタグは、特定のプログラミング言語に依存しないプログラミングの質問に使用します。


5
特定の合計または平均を持つ範囲でN個のランダムな整数を生成する効率的な方法はありますか?
N個の整数のランダムな組み合わせを生成する効率的な方法はありますか? 各整数は区間[ min、max]にあり、 整数の合計はsum、 整数は任意の順序(たとえば、ランダムな順序)で表示できます。 組み合わせは、他の要件を満たすすべての組み合わせの中からランダムに均一に選択されていますか? ランダムな組み合わせに対して同様のアルゴリズムがあり、整数は値によってソートされた順序で(順序ではなく)表示される必要がありますか? (平均の適切な組み合わせを選択することmeanは特殊なケースですsum = N * mean。の場合。この問題はsum、間隔[ min、max]にあり、任意の順序または並べ替えられた順序で表示されるN個の部分に均一なランダムパーティションを生成するのと同じです。場合によっては値)。 この問題は、ランダムな順序で現れる組み合わせに対して次の方法で解決できることを認識しています(編集[4月27日]:アルゴリズムが変更されました)。 N * max < sumまたはの場合N * min > sum、解決策はありません。 の場合N * max == sum、すべてのN数値がに等しいソリューションが1つだけ存在しmaxます。の場合N * min == sum、すべてのN数値がに等しいソリューションが1つだけ存在しminます。 SmithとTrombleで指定されたアルゴリズム(「単位シンプレックスからのサンプリング」、2004)を使用して、合計でN個のランダムな非負の整数を生成しsum - N * minます。 minこの方法で生成された各数値に追加します。 いずれかの数値がより大きい場合はmax、手順3に進みます。 ただし、maxがより小さい場合、このアルゴリズムは遅くなりsumます。たとえば、私のテストによれば(上記の特殊なケースの実装を伴うmean)、アルゴリズムは平均して拒否します— の場合N = 7, min = 3, max = 10, sum …

8
最も人口の多い年を見つける(最も効率的なソリューション)
2つの配列があるとします。$births誰かが生まれた時期を示す誕生年$deathsのリストと、誰かが死亡した時期を示す死年のリストが含まれている場合、人口が最も多かった年をどのように見つけることができますか? たとえば、次の配列があるとします。 $births = [1984, 1981, 1984, 1991, 1996]; $deaths = [1991, 1984]; 人口が最も多かった年はであるはずです1996。なぜなら3、その年の間に人々は生きていたからです。それは、それらの年の中で最も高い人口数でした。 これについて、実行中の数学は次のとおりです。 | 誕生| 死| 人口| | ------- | ------- | ------------ | | 1981 | | 1 | | 1984年 | 2 | | 1984年 1984年 2 | | 1991 | 1991 | 2 | | …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.